OpenStack云平台运维
- 在自行搭建的OpenStack平台上,使用命令创建一个名为Fmin,ID为1,内存为1024MB,磁盘为10GB,vcpu数量为1的云主机类型。
opestack flavor create --id 1 Fmin --ram 1024 --disk 10 --vcpus 1
openstack flavor list
- 在自行搭建的OpenStack平台上,创建云主机网络extnet,子网extsubnet,虚拟机网段为192.168.100.0/24,网关为192.168.100.1,段ID默认写100,网络使用vlan模式。
openstack network create --project admin --provider-network-type vlan --provider-physical-network provider --provider-segment 100 --external extnet
openstack subnet create --network extnet --subnet-range 192.168.100.119/24 --gateway 192.168.100.1 --dhcp "extsubnet"
- 在自行搭建的OpenStack平台上,基于“cirros”镜像、1vCPU/1G /10G的flavor、extsubnet的网络,创建一台虚拟机VM1,启动VM1。
openstack server create --flavor Fmin --image centos --network extnet VM1
openstacl server create VM1 –flavor Fmin –image centos –network extent
- 在自行搭建的OpenStack平台上,使用glance相关命令上传镜像,镜像源为CentOS_7.5_x86_64.qcow2,名为Gmirror1,min _ram为2048M,min_disk为20G。
glance image-create --name Gmirror1 --disk-format qcow2 --container-format bare --min-ram 2048 --min-disk 20 --progress < /opt/iaas/images/CentOS_7.5_x86_64_XD.qcow2
or openstack image create Gmirror1 –disk-format qcow2 –container-format bare –min-ram 2048 –min-disk 20 –file /opt/iaas/images/C…….
openstack image create centos --disk-format qcow2 --container-format bare --file /opt/iaas/images/CentOS_7.5_x86_64_XD.qcow2
- 在自己搭建的OpenStack平台上,将云主机VM1保存为qcow2格式的快照并保存到controller节点/root/cloudsave目录下,保存名字为csccvm.qcow2。
openstack server image create VM1 --name myVM1
openstack image save --file /root/myVM1.qcow2 myVM1
- 在自己搭建的OpenStack平台上,使用cinder服务,创建一个名为“lvm”的卷类型,创建1块卷类型为lvm的1G云盘,并附加到虚拟机VM1上;
cinder type-create lvm or openstack volume type create lvm
cinder create --volume-type lvm --name xy 1or openstack volume create xy --type lvm --size 2openstack server add volume VM1 block
登录提供的私有云平台,创建一台centos7.5的云主机,flavor使用带有附加硬盘的类型。连接到该云主机,使用附加的硬盘,划分4个10G的分区,使用这4个分区创建一个raid5级别的磁盘阵列,其中1个分区作为热备盘。
fdisk /dev/sdb
n
p
+5G
mdadm -C /dev/md5 -a yes -l 5 -n 3 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
mdadm -D /dev/md5
- 在自行搭建的OpenStack平台上,基于cirros-0.3.4-x86_64-disk.img镜像创建一个名为cirros的镜像,并打标签为small。
glance image-create --name cirros --disk-foemat qcow2 --container-format bare --progress < /root/cirros-0.3.4-x86_64-disk.img
openstack image set cirros --tag small
- 在自行搭建的OpenStack平台上,使用cirros镜像创建云主机,flavor使用1vcpu/512M内存/1G硬盘,创建云主机cscc_vm,假设在使用过程中,发现该云主机配置太低,需要调整,请修改相应配置,将dashboard界面上的云主机调整实例大小可以使用,将该云主机实例大小调整为1vcpu/1G内存/2G硬盘。
Vim /etc/nova/nova.conf
allow_resize_to_same_host=True 修改为
创建云主机类型,调成云主机大小
在dashboard界面上调整云主机实例大小,将云主机实例大小调整为1vcpu/1G内存/2G硬盘。
- 在controller节点上创建名为chinaskill的容器,并获取该容器的存放路径;将cirros-0.3.4-x86_64-disk.img镜像上传到chinaskill容器中,并设置分段存放,每一段大小为10M。
swift-ring-builder object.builder
swift post chinaskill
swift stat chinaskill
swift-get-nodes -a /etc/swift/object.ring.gz AUTH_0ab2dbde4f754b699e22461426cd0774/chinaskill/0
swift upload xiandian -S 10000000 root/cirros-0.3.4-x86_64-disk.img
or cd /opt/iaas/images/
swift upload --segment-container test test -S 10000000 CentOS_6.5_x86_64_XD.qcow2
swift stat xiandian root/cirros-0.3.4-x86_64-disk.img
swift list xiandian_segments
- 使用qemu-img相关命令,查询Gmirror1镜像的compat版本,然后将Gmirror1镜像的campat版本修改为0.10(该操作是为了适配某些低版本的云平台)
openstack image create Gmirror1 –disk-format qcow2 –container-format bare –min-ram 2048 –min-disk 20 –file /opt/iaas/images/C…….
cd /var/lib/glance/images/
ll
qemu-img amend -f qcow2 -o compat=0.10 【容器ID】
- 在自行搭建的OpenStack平台上,使用Swift对象存储服务,修改相应的配置文件,使对象存储Swift作为glance镜像服务的后端存储。
Vim /etc/glance/glance-api
[glance-store]
stores = glance.store.swift.Store 修改为
default_store = swift 修改为
swift_store_auth_address = http://172.129.119.10:5000/v2.0/ 添加
swift_store_create_container_on_put = True 添加
swift_store_multi_tenant = True 添加
swift_store_admin_tenant = service 添加
- 登录提供的私有云平台,创建一台centos7.5的云主机,flavor使用带有附加硬盘的类型。连接到该云主机,使用附加的硬盘,要求分出两个大小为5G的分区。使用两个分区,创建名为chinaskill-vg的卷组。
vgcreate [-s PE 大小] 卷组名 物理卷名,[-s PE 大小] 选项的含义是指定 PE 的大小,单位可以是 MB、GB、TB 等。如果不写,则默认 PE 大小是 4MB。这里的卷组名指的就是要创建的卷组的名称,而物理卷名则指的是希望添加到此卷组的所有硬盘区分或者整个硬盘。
vgcreate -s 4GB chinaskill-vg /dev/sdc1 /dev/sdc2
激活卷组:vgchange -a y chinaskill-vg 停用卷组: vachange -a n 卷组名 删除卷组:vgremove scvg
增加:vgextend scvg /dev/sdb7 把/dev/sdb7物理卷也加入scvg卷组
减少:vgreduce scvg /dev/sdb7在卷组中删除/dev/sdb7物理卷
vgscan 命令主要用于查看系统中是否有卷组;而 vgdisplay 命令则用于查看卷组的详细状态
- 在自行搭建的OpenStack平台上,对cinder存储空间进行扩容操作,要求将cinder存储空间扩容10G。
pvcreate /dev/sdb1
vgcreate cinder-volumes /dev/sdb1
vgdisplay
创建一块新分区(sdc1)
vgextend cinder-volumes /dev/sdc1 添加
vgdisplay 查看
- 使用提供的云安全框架组件,将自行搭建的OpenStack云平台的安全策略从http优化至https。
yum -y install mod_ssl
vi /etc/openstack-dashboard/local_settings
##在DEBUG = False下增加4行
USE_SSL = True
CSRF_COOKIE_SECURE = True ##原文中有,去掉注释即可
SESSION_COOKIE_SECURE = True ##原文中有,去掉注释即可
SESSION_COOKIE_HTTPONLY = True
vi /etc/httpd/conf.d/ssl.conf
##将SSLProtocol all -SSLv2 -SSLv3改成:
SSLProtocol all -SSLv2
systemctl restart httpd
systemctl restart memcached
- 在controller节点上,编写脚本mysqlbak.sh,要求执行该脚本可以备份数据库,并存放在/opt/mysqlbak目录下。
#!bin/bash
#备份路径
BACKUP=/root/mysql-backup
#数据库的定时备份
DATETIME=`date +%Y_%m_%d_%H%%M%S`
#echo "$DATETIME"
echo "====start backup to $BACKUP/$DATETIME/$DATETIME.tar.gz====="
#主机
HOST=rabbitmq
DB_USER=xy
DB_PWD=000000
#要备份的数据库名
DATABASE=xy
#创建备份的路径,如果路径不存在就创建
[ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"
#执行mysql的备份数据库指令
mysqldump -u${DB_USER} -p${DB_PWD} --host=$HOST $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz
#打包备份文件
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME
#删除临时目录
rm -rf $BACKUP/$DATETIME
#删除1天前的备份文件
#在$backup目录下按照时间找10天前的名称为*.tar.gz的文件,-exec表示执行找到的文件
find $BACKUP -mtime +1 -name "*.tar.gz" -exec rm rf {} \;
echo "============backup success============"
#加入定时任务表示每天8点30分执行后面的命令(shell脚本的路径)
crontab -e
30 8 * * * /root/mysql_backup.sh
- 在controller节点上,创建名为test的容器,并上传skill.txt文件(文件可自行创建)至test容器中。
swift post test
openstack container list
echo "open stack总有一天会全是中文的!!!" > xy.txt
swift upload test xy.txt 把txt上传至test容器
openstack container show test
openstack object create test xy.txt
- 登录 IaaS 云主机,创建 swifter 用户,并创建 swift 租户,将 swifter 用户规划到 swift 租户下,赋予 swifter 用户使用 swift 服务的权限,并通过 url 036的方式使用该用户在 swift 中创建容器。
openstack user create --domain xiandian --password 123456 swifter
openstack project create --domain xiandian swift
openstack role add --user swifter --project swift --user-domain xiandian admin
swift -A http://xiandian:5000/v3 -U swifter -K 000000 create test
使用url的方式,用admin账号在swift中创建容器,创建完之后用url的方式查看容器列表。
swift -A http://xiandian:5000/v3 -U admin -K 000000 create test
swift -A http://xiandian:5000/v3 -U admin -K 000000 list –lh
- 在自行搭建的OpenStack平台上,使用cirros镜像创建云主机vm1,并使用cinder服务在这个云主机上挂载一个大小为2G的硬盘。
打开dashboard,进入卷,点击"创建卷",将卷加入到云主机中,"编辑卷"-->"管理连接"-->"链接云主机"
进入云主机进行查看磁盘挂载情况
fdisk -l
- 在自行搭建的OpenStack平台上,修改相关参数对openstack平台进行调优操作,相应的调优操作有:
预留前2个物理CPU,把后面的所有CPU分配给虚拟机使用(假设vcpu为16个);
Vim /etc/nova/nova.conf
vcpu_pin_set
#cat /proc/cpuinfo里面的逻辑核数,再x16就是你能够分配给虚拟机的。内存也是类似
cat /proc/cpuinfo | grep "cpu cores" | uniq
#物理 CPU 超售比例,默认是 16 倍,超线程也算作一个物理 CPU,需要根据具体负载和物理 CPU 能力进行综合判断后确定具体的配置
cpu_allocation_ratio = 4.0
#内存分配超售比例,默认是 1.5 倍,生产环境不建议开启超售。
ram_allocation_ratio = 1.0
#内存预留量,这部分内存不能被虚拟机使用
reserved_host_memory_mb = 4096
#磁盘预留空间,这部分空间不能被虚拟机使用
reserved_host_disk_mb = 10240
#服务下线时间阈值,默认60,如果一个节点上的 nova 服务超过这个时间没有上报心跳到数据库,api 服务会认为该服务已经下线,如果配置过短或过长,都会导致误判。
service_down_time = 120
- 在自行搭建的OpenStack平台上,执行相关命令,将controller节点的资源加入到OpenStack平台中,即controller节点既是控制节点也是计算节点。
vim /etc/xiandain/opensrc.sh
将compute改为controller,compute的IP地址改为controller的IP地址
iaas-install-nova-compute.sh
- 在自行搭建的OpenStack平台上,使用cirros镜像创建云主机vm1,然后将该云主机进行手动迁移,若原来创建在compute节点上的,则迁移至controller节点上;若原来创建在controller节点上的,则迁移至compute节点上。
迁移的步骤:1、将关于虚拟机的数据移到目标主机(移动之前需要关闭虚拟机)在OpenStack里云主机的数据存放目录是/var/lib/nova/instances/ 2、修改数据库文件在nova数据库的instances 表里有记录虚拟机的宿主机的名字,所以需要进入数据库修改该字段为controller
ll /var/lib/nova/instances/
scp –r <云主机的ID>把它复制到controller节点,把本主机的删除,
chown -R nova:nova <云主机的ID> 把它的用户和用户组修改成nova
然后修改数据库文件
mysql -uroot -p000000
show databases; use nova;show tables; select host,node,uuid from instances;
update instances set host='controller',node='controller' where uuid=“查询到要迁移的云主机的uuid”
select host,node,uuid from instances;
systemctl restart openstack-nova-compute
- 在自行搭建的OpenStack平台上,使用cinder服务创建卷block1,大小为1G,并挂载到云主机vm1上使用。
cinder volume-create --size 1 block1
openstack server list 查询
openstack server add volume block1 <云主机名字>