8.1 OpenStack 运维命令 ====================== |image0| -------------- 一、OpenStack ------------- 1.1 Nova ~~~~~~~~ 虚拟机管理 ^^^^^^^^^^ .. code:: shell # 所有运行nova服务的信息 $ nova service-list # 查看虚拟机的详细信息 $ nova show # 查看集群节点(宿主机、组件服务)信息 $ nova host-list # 查看当前计算节点,创建了哪些虚拟机 $ ll /var/lib/nova/instances # List actions on a server $ nova instance-action-list $ nova start # 开机 $ nova stop # 关机 $ nova delete # 删除 # 创建网段(未测试) $ nova-manage network create --fixed_range_v4=10.0.1.0/24 --vlan=102 --project_id="tenantID" # 创建虚拟机 $ nova boot \ --flavor \ --security-groups default \ --nic net-id=,v4-fixed-ip= \ --image \ --config-drive True \ --min-count 2 \ --user-data [user-data-file-path] \ [--num-instances 2] [--snapshot ] [--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 # 关闭某节点服务 $ nova service-disable bm-compute-01 nova-compute $ nova service-enable bm-compute-01 nova-compute # 列出所有安全组 $ nova secgroup-list # 列出指定安全组的规则 $ nova secgroup-list-rules $ 增加安全组规则(开放ssh) $ nova secgroup-add-rule default tcp <22> <22> <0.0.0.0/0> # 设置metadata nova meta xxxxxx set ws:evacuate_interval=10 flavor管理 ^^^^^^^^^^ .. code:: shell # 新建flavor $ nova flavor-create [--ephemeral ] [--swap ] [--rxtx-factor ] [--is-public ] # 删除flavor $ nova flavor-delete # 查看flavor信息 $ nova flavor-show # 添加/修改flavor.extra_specs信息 $ nova flavor-key set # 重置/删除flavor.extra_specs信息 $ nova flavor-key unset aggregate管理 ^^^^^^^^^^^^^ .. code:: shell # 查看所有aggregate的列表,并不包含metadata $ nova aggregate-list # 往aggregate添加host $ nova aggregate-add-host # 创建aggregage分组 $ nova aggregate-create # 删除aggregate空分组,如果aggregate的host不为空,需要先使用aggregate-remove-host 清空host $ nova aggregate-delete # 在aggregate中移除主机 $ nova aggregate-remove-host # 查看某aggregate分组的详细信息,逐渐丢弃,请使用aggregate-show $ nova aggregate-details $ nova aggregate-show # 往aggregate 里添加/更新 metadata 信息 $ nova aggregate-set-metadata [ ...] # 更新aggregate的name或者availability-zone $ nova aggregate-update [--name NAME] [--availability-zone ] 1.2 Neutron ~~~~~~~~~~~ .. code:: shell # 重启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 # 查看子网 $ neutron subnet-show # 查看网络列表 $ neutron net-list # 查看端口占用情况 $ neutron port-list # 指定 mac 创建port neutron port-create --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 ~~~~~~~~~~ .. code:: shell 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 ~~~~~~~~~~~~ .. code:: shell # -------------------------------token-------------------------------- # 生成token $ openstack token issue # -------------------------------domain-------------------------------- # 创建domain $ openstack domain create [--description "add new domain"] # 查看domain $ openstack domain show $ openstack domain list # 删除domain,删除前必须置为disable状态 $ openstack domain set --disable $ openstack domain delete # 更改domain属性:名字,描述,状态 $ openstack domain set [-h] [--name ] [--description ] [--enable | --disable] # -------------------------------project-------------------------------- # 查看租户列表/信息 $ openstack project list $ openstack project show # 创建租户 $ openstack project create [--domain ] [--description ] # 删除租户,可以无需指定domain,默认default $ openstack project delete $ openstack project delete [--domain ] [ ...] # 设置租户属性 $ openstack project set [--name ] [--domain ] [--description ] [--enable | --disable] [--property ] # -------------------------------user-------------------------------- # 查看/删除/增加用户列表 $ openstack user list $ openstack user delete $ openstack user create # 修改当前用户密码 $ openstack user password set [--password ] [--original-password ] # 设置用户属性:租户,domain,名字,密码,远程密码?,Email,描述信息,是否可用 openstack user set [--name ] [--project ] [--project-domain ] [--password ] [--password-prompt] [--email ] [--description ] [--enable | --disable] # 查看用户具体信息 $ openstack user show # -------------------------------role-------------------------------- # 查看角色列表 $ openstack role list # 增加/删除/查看角色 $ openstack role create $ openstack role delete $ openstack role show # 设置角色的属性:只有两个属性domain和name $ openstack role set [--domain ] [--name ] # 查看角色-用户-租户的对应关系表 $ openstack role assignment list # 增加/删除角色-用户-租户的对应关系表,具体查看帮助文件 $ openstack role add -h $ openstack role remove -h 二、KVM/QEMU ------------ -------------- 1.2 virsh命令 ~~~~~~~~~~~~~ .. code:: shell # 查看虚拟机的网卡信息 $ virsh domiflist VM1 # kvm 添加硬盘 qemu-img create -f qcow2 git-openstack.qcow2 100G virsh attach-disk vdb --cache=none --subdriver=qcow2 virsh detach-disk /data/test02_add01.qcow2 # 暂停/恢复 virsh suspend virsh resume # 开机自启 virsh autostart virsh list --autostart # 修改虚拟机密码,需要虚拟机内部安装 qga:qemu-guest-agent virsh set-user-password instance-00000444 root "root12#$" 热增加网卡:\ ``virsh attach-device ws_controller01 ./tmp.xml --persistent --live`` .. code:: xml 热去除带宽限速 .. code:: shell $ virsh domiftune ws_controller01 vnet4 --inbound 0,0,0 --outbound 0,0,0 --config --live 压缩镜像 .. code:: shell # 压缩镜像 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日志 .. code:: shell virt-log -d ws_controller01 1.2 LVM管理 ~~~~~~~~~~~ .. code:: shell # 查看计算节点VG信息 $ vgdisplay # 查看虚拟机磁盘信息 $ lvs # 删除LV $ lvremove /dev/ssd-volume/* -y # 查看可用块设备列表 $ lsblk # 将pv从vg移除 $ vgreduce --removemissing --force hdd-volumes # 添加 pv 到 vg 中 $ vgextend hdd-volumes /dev/sda 三、集群相关 ------------ -------------- 3.1 MariaDB ~~~~~~~~~~~ .. code:: shell # 查看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] 3.3 pacemaker ------------- :: pkill -9 pacemaker;service pacemaker restart -------------- |image1| .. |image0| image:: http://image.iswbm.com/20200602135014.png .. |image1| image:: http://image.iswbm.com/20200607174235.png