8.1 OpenStack 运维命令¶
一、OpenStack¶
1.1 Nova¶
虚拟机管理¶
# 所有运行nova服务的信息
$ nova service-list
# 查看虚拟机的详细信息
$ nova show <uuid>
# 查看集群节点(宿主机、组件服务)信息
$ nova host-list
# 查看当前计算节点,创建了哪些虚拟机
$ ll /var/lib/nova/instances
# List actions on a server
$ nova instance-action-list <uuid/name>
$ nova start <uuid> # 开机
$ nova stop <uuid> # 关机
$ nova delete <uuid> # 删除
# 创建网段(未测试)
$ nova-manage network create --fixed_range_v4=10.0.1.0/24 --vlan=102 --project_id="tenantID"
# 创建虚拟机
$ nova boot <vm_name> \
--flavor <flavor_id> \
--security-groups default \
--nic net-id=<net_id>,v4-fixed-ip=<ip> \
--image <image_id/name> \
--config-drive True \
--min-count 2 \
--user-data [user-data-file-path] \
[--num-instances 2]
[--snapshot <snapshot_id>]
[--block-device-mapping vda=a9c7816b-0046-4aa9-9c82-cb881a969bdd:snapshot:300:delete-on-terminate --availability-zone nova:LX-OS-node13 --poll]
$ nova boot --flavor m1.tiny --image cirros --nic net-id=6df1fa59-25a3-4f8c-8d14-ae7f7828c1a2 greenboxes
# 查看控制节点的资源信息
$ nova host-describe <compute_node>
# 关闭某节点服务
$ nova service-disable bm-compute-01 nova-compute
$ nova service-enable bm-compute-01 nova-compute
# 列出所有安全组
$ nova secgroup-list
# 列出指定安全组的规则
$ nova secgroup-list-rules <default>
$ 增加安全组规则(开放ssh)
$ nova secgroup-add-rule default tcp <22> <22> <0.0.0.0/0>
# 设置metadata
nova meta xxxxxx set ws:evacuate_interval=10
flavor管理¶
# 新建flavor
$ nova flavor-create [--ephemeral <ephemeral>] [--swap <swap>] [--rxtx-factor <factor>] [--is-public <is-public>]
<name> <id> <ram> <disk> <vcpus>
# 删除flavor
$ nova flavor-delete <id>
# 查看flavor信息
$ nova flavor-show <name|id>
# 添加/修改flavor.extra_specs信息
$ nova flavor-key <flavor id/name> set <key=value>
# 重置/删除flavor.extra_specs信息
$ nova flavor-key <flavor id/name> unset <key>
aggregate管理¶
# 查看所有aggregate的列表,并不包含metadata
$ nova aggregate-list
# 往aggregate添加host
$ nova aggregate-add-host <aggregate id> <compute host>
# 创建aggregage分组
$ nova aggregate-create <aggregate name>
# 删除aggregate空分组,如果aggregate的host不为空,需要先使用aggregate-remove-host 清空host
$ nova aggregate-delete <aggregate id/name>
# 在aggregate中移除主机
$ nova aggregate-remove-host <aggregate id/name> <compute host>
# 查看某aggregate分组的详细信息,逐渐丢弃,请使用aggregate-show
$ nova aggregate-details <aggregate id/name>
$ nova aggregate-show <aggregate id/name>
# 往aggregate 里添加/更新 metadata 信息
$ nova aggregate-set-metadata <aggregate id/name> <key=value> [<key=value> ...]
# 更新aggregate的name或者availability-zone
$ nova aggregate-update [--name NAME] [--availability-zone <availability-zone>] <aggregate id>
1.2 Neutron¶
# 重启neutron-service
$ service neutron-server restart
# 启动linuxbridge服务
$ service neutron-linuxbridge-agent restart
# 创建网络
$ neutron net-create --provider:physical_network phynet1 --provider:network_type flat private
# 创建子网 全
$neutron subnet-create --name public\
--allocation-pool start=172.20.20.100,end=172.20.20.199 \
--gateway 172.20.20.200 \
--enable_dhcp=False \
--dns-nameserver 114.114.114.114 \
public 172.20.20.0/24
# 创建子网,更多选项可以查看 neutron subnet-create -h
neutron subnet-create --name private --allocation-pool start=192.168.2.200,end=192.168.2.230 --gateway 192.168.2.253 --dns-nameserver 114.114.114.114 --disable-dhcp public 192.168.2.0/24
# 查看网络
$ neutron net-show <net_name>
# 查看子网
$ neutron subnet-show <subnet_name>
# 查看网络列表
$ neutron net-list
# 查看端口占用情况
$ neutron port-list
# 指定 mac 创建port
neutron port-create <network> --tenant-id 100001 --fixed-ip ip_address=192.168.0.22 --mac-address fa:16:3e:3a:e8:1b
nova interface-attach b0cc47bc-25c3-48ca-a4fd-5523326b515a --port-id 8bcba4eb-ade0-403d-8f13-45ed70936f03
# 关闭port安全组
neutron port-update --no-security-groups --port-security-enabled=False
1.3 Glance¶
glance镜像存放:/var/lib/image
# 官方地址
https://docs.openstack.org/project-install-guide/baremetal/draft/configure-glance-images.html
# 上传镜像 (具体看哪glance help image-create)
$ glance image-create --name centos6.5-old --visibility public --disk-format qcow2 --container-format bare --property ws:predownload=True --file /home/
1.4 keystone¶
# -------------------------------token--------------------------------
# 生成token
$ openstack token issue
# -------------------------------domain--------------------------------
# 创建domain
$ openstack domain create [--description "add new domain"] <domain-name>
# 查看domain
$ openstack domain show <domain-name>
$ openstack domain list
# 删除domain,删除前必须置为disable状态
$ openstack domain set --disable <domain-name>
$ openstack domain delete <domain-name>
# 更改domain属性:名字,描述,状态
$ openstack domain set [-h] [--name <name>] [--description <description>]
[--enable | --disable]
<domain>
# -------------------------------project--------------------------------
# 查看租户列表/信息
$ openstack project list
$ openstack project show <id/project-name>
# 创建租户
$ openstack project create [--domain <domain>] [--description <description>] <project-name>
# 删除租户,可以无需指定domain,默认default
$ openstack project delete <project-name>
$ openstack project delete [--domain <domain>] <project> [<project> ...]
# 设置租户属性
$ openstack project set [--name <name>] [--domain <domain>]
[--description <description>]
[--enable | --disable] [--property <key=value>]
<project>
# -------------------------------user--------------------------------
# 查看/删除/增加用户列表
$ openstack user list
$ openstack user delete <id/name>
$ openstack user create <name>
# 修改当前用户密码
$ openstack user password set [--password <new-password>] [--original-password <original-password>]
# 设置用户属性:租户,domain,名字,密码,远程密码?,Email,描述信息,是否可用
openstack user set [--name <name>] [--project <project>]
[--project-domain <project-domain>]
[--password <password>] [--password-prompt]
[--email <email-address>]
[--description <description>] [--enable | --disable]
<user>
# 查看用户具体信息
$ openstack user show <id/name>
# -------------------------------role--------------------------------
# 查看角色列表
$ openstack role list
# 增加/删除/查看角色
$ openstack role create <name>
$ openstack role delete <name>
$ openstack role show <id/name>
# 设置角色的属性:只有两个属性domain和name
$ openstack role set [--domain <domain>] [--name <name>] <role>
# 查看角色-用户-租户的对应关系表
$ openstack role assignment list
# 增加/删除角色-用户-租户的对应关系表,具体查看帮助文件
$ openstack role add -h
$ openstack role remove -h
二、KVM/QEMU¶
1.2 virsh命令¶
# 查看虚拟机的网卡信息
$ virsh domiflist VM1
# kvm 添加硬盘
qemu-img create -f qcow2 git-openstack.qcow2 100G
virsh attach-disk <vm_name> <path qcow2> vdb --cache=none --subdriver=qcow2
virsh detach-disk <vm_name> /data/test02_add01.qcow2
# 暂停/恢复
virsh suspend <vm_name>
virsh resume <vm_name>
# 开机自启
virsh autostart <vm_name>
virsh list --autostart
# 修改虚拟机密码,需要虚拟机内部安装 qga:qemu-guest-agent
virsh set-user-password instance-00000444 root "root12#$"
热增加网卡:virsh attach-device ws_controller01 ./tmp.xml --persistent --live
<interface type='bridge'>
<source bridge='br0-ovs'/>
<virtualport type='openvswitch'>
</virtualport>
<target dev='vnet4'/>
<model type='virtio'/>
<alias name='net1'/>
</interface>
热去除带宽限速
$ virsh domiftune ws_controller01 vnet4 --inbound 0,0,0 --outbound 0,0,0 --config --live
压缩镜像
# 压缩镜像
virt-sparsify –compress ${ori_img_path} ${dest_img_path}
# 解决 tmp 目录空间不足的情况,仅对当前终端有效
mkdir /data/tmp
chmod 1777 /data/tmp/
export TEMP=/data/tmp
export TMPDIR=/data/tmp
# 解决 tmp 目录空间不足的情况,对所有终端有效
echo 'export TEMP=/data/tmp' >> /etc/profile
echo 'export TMPDIR=/data/tmp' >> /etc/profile
source /etc/profile
在线查看虚拟机的messages日志
virt-log -d ws_controller01
1.2 LVM管理¶
# 查看计算节点VG信息
$ vgdisplay
# 查看虚拟机磁盘信息
$ lvs <instance_uuid>
# 删除LV
$ lvremove /dev/ssd-volume/* -y
# 查看可用块设备列表
$ lsblk
# 将pv从vg移除
$ vgreduce --removemissing --force hdd-volumes
# 添加 pv 到 vg 中
$ vgextend hdd-volumes /dev/sda
三、集群相关¶
3.1 MariaDB¶
# 查看MariaDB集群数量
$ mysql -e 'show status like "wsrep_%"' -ppasswd|grep wsrep_cluster_size|awk '{ print $2 }'
# 查看该节点MariaDB是否启动
$ mariadbClusterCheck
3.2 RabbitMQ¶
先在一台节点启动 service rabbitmq-server restart
启动后,会生成 /var/lib/rabbitmq/.erlang.cookie
文件,为了实现节点间的通信加密,需要将这个文件拷贝至其他两个节点。拷贝时,注意生意授予权限。
chown rabbitmq.rabbitmq /var/lib/rabbitmq/.erlang.cookie
然后启动一下后面两台的服务。
service rabbitmq-server restart
以上都准备好了,现在好开始构建集群了。
分别在后面两个节点执行如下操作。
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@ws_controller01(ws_controller01为节点1的hostname)
rabbitmqctl start_app
执行完成后,可以查看一下集群状态。
rabbitmqctl cluster_status
有了集群后,如果要(openstack)使用,还要创建一下用户
rabbitmqctl add_user openstack openstack12#$
rabbitmqctl set_permissions -p / openstack ".*" ".*" ".*"
rabbitmqctl set_user_tags openstack administrator
# 指定节点执行命令
rabbitmq -n rabbit@ws_controller02 [command]