OpenStack运维题

OpenStack例题:

一、配置YUM源

注意:如果web登录Dashboard仪表盘出错了请联系管理员刷新,使用https://协议登录成功,可能跟ssl有关。

例题一、repo编写

在配置httpd.conf文件时,需要修改主目录为opt,这样在网站上打开时才会显示opt目录中的文件

修改以下两处:

<Directory "/opt">

DocumentRoot "/opt"

使用提供的http服务地址,在http服务下,存在centos7.5和iaas的网络yum源,使用该http源作为安装iaas平台的网络源。分别设置controller节点和compute节点的yum源文件http.repo。

[root@controller yum.repos.d]#cat http.repo
​[centos]
​name=centos
​baseurl=http://IP地址/centos	#该IP是提供的http服务地址,练习改成自己的
​gpgcheck=0
​enabled=1

​[iaas]
​name=iaas
​baseurl=http://IP地址/iaas	#该IP是提供的http服务地址,练习改成自己的
​gpgcheck=0
​enabled=1

二、时间同步配置

例题一、配置时间同步

在controller节点上部署chrony服务器,允许其他节点同步时间,启动服务并设置为开机启动;在compute节点上指定

controller节点为上游NTP服务器,重启服务并设为开机启动。

[root@controller  /]# yum install -y chrony && systemctl enable chronyd
[root@controller  /]# vi /etc/chrony.conf		
allow	192.168.0.0/16	#根据自身IP段进行配置,意为允许广播到的网络范围
local	stratum	10
[root@controller  /]# systemctl start chronyd
[root@compute  /]# yum install -y chrony && systemctl enable chronyd
[root@compute  /]# vi /etc/chrony.conf
	server	controller节点IP	iburst
注意:修改时区-如果时间不是CST时区可以修改回来

注意域名解析服务器,因为是通过主机名解析不是直接通过IP地址,如果域名解析没有配置好,那么时间同步不会成功,CST:中央标准时区。UTC:世界协调时间。我国为CST+8的时间标准。

[root@controller  /]# date 
2018年 03月 02日 星期五 14:09:45 CST
[root@controller  /]# tzselect #设置时区
时区的设置文件:/etc/timezone
时间相关文件:/etc/localtime
时间相关的文件:/usr/share/zoneinfo/Asia 这里边放着亚洲主要城市的时间
设置时间 rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

三、数据库操作

例题一、数据库创建插入数据

登录数据库服务,创建库test,并在库test中创建表company(表结构如(id int not null primary key,name varchar(50),addr varchar(255))所示),在表company中插入一条数据(1,"alibaba","china")。

[root@controller  /]#mysql -uroot -p000000
​mysql> create database test;
​mysql> u test
​mysql> create table company(
​->id int not null primary key,
​->name varchar(50),
​->addr varchar(255)
​->);

​mysql> insert into company values(1,'alibaba','china');
例题二、RabbitMQ用户创建设置权限

使用RabbitMQ服务的相关命令创建用户chinaskill,密码为chinapd,并赋予该用户administrator权限。

[root@controller  /]#rabbitmqctl add_user  chinaskill chinapd
[root@controller  /]#rabbitmqctl set_user_tags chinaskill administrator
[root@controller  /]#rabbitmqctl set_permissions chinaskill ".*" ".*" ".*"

启动RabbitMQ Web服务检验

[root@controller  /]#rabbitmq-plugins enable rabbitmq-management
	浏览器输入http://192.168.100.10:15672使用chinaskill登录
例题三:主从数据库

主从数据库配置:

1、安装数据库mariadb-server(多节点操作):
[root@node-1  /]# yum install -y mariadb-server
[root@node-2  /]# yum install -y mariadb-server
[root@node-3  /]# yum install -y mariadb-server
2、主数据库修改配置文件:
[root@node-1  /]# vi /etc/my.cnf
   [mysqld]
   server-id=1	#各服务器确保ID唯一性
   log-bin=mysql-bin #log-bin不指定默认datadir指向的目录,mysql-bin也是头文件名
3、各节点初始化数据库:
[root@node-1  /]# mysql_install_db --user=mysql
[root@node-2  /]# mysql_install_db --user=mysql
[root@node-3  /]# mysql_install_db --user=mysql
4、从数据库修改配置文件:
[root@node-2  /]# vi /etc/my.cnf
   [mysqld]
   server-id=2
[root@node-3  /]# vi /etc/my.cnf
   [mysqld]
   server-id=3
5、启动各节点的数据库,设置开机自启:
[root@node-1  /]# systemctl start mariadb && systemctl enable mariadb
[root@node-2  /]# systemctl start mariadb && systemctl enable mariadb
[root@node-3  /]# systemctl start mariadb && systemctl enable mariadb
6、创建主从连接账号与授权:
[root@node-1  /]# create user '用户名slave'@'%' identified by '密码';
[root@node-1  /]# grant replication slave on *.* to 'slave'@'%';
#grant 允许 #replication 同步复制 # slave从权限为*.*全部 账号为'slave'@'主机名'
[root@node-1  /]# flush privileges;
[root@node-1  /]# show master status; 	
#查看masterlog文件和pos偏移量
7、从数据库连接:
[root@node-2  /]# change master to master_host='IP',master_user='slave',master_password='密码',master_log_file='mysql-logXXX',master_log_pos='570';
[root@node-2  /]# show slave statusG 	
#查看详细信息

四、heat模板

例题一、heat-template编写

使用自己搭建的openstack云平台,在/root目录下编写模板server.yaml,创建名为“m1.flavor”、 ID 为 1234、内存为1024MB、硬盘为20GB、vcpu数量为 1的云主机类型。

[root@controller  /]#vi /root/server.yaml
heat_template_version: 2013-05-23 #模板版本
resources: #资源,不可少
	m1: #名字随便起
    	type: OS::Nova::Flavor #不可少,使用Flavor代表要创建的是主机类型,可以在web中查看所有模板
		properties: #参数,不可少
			ram: 1024
			name: m1.flavor
			flavorid: 1234
			disk: 20
			vcpus: 1	    
[root@controller  /]#openstack stack create -f yaml -t /root/server.yaml stack2
*openstack stack create命令执行yaml文件
*-f指定类型为yaml,可以不写 
*-t指定模板为/root/server.yaml文件
*stack2为给堆栈起一个名字,自己定义

或者使用以下表达方式:

heat_template_version: '2013-05-23'
resources:
  m1:
    properties: {disk: 20, flavorid: 1234, name: m1.flavor, ram: 1024, vcpus: 1}
    type: OS::Nova::Flavor
*yaml写法:每个冒号“:”符号后必须有空格
*大小写敏感
*使用缩进表示层级关系,缩进不能用tab只能是空格,缩进空格数目不重要,只要相同等级元素左对齐

五、Cinder使用

例题一、使用cinder命令创建云硬盘

注意:若执行命令报ERROR: You must provide ······,请执行source /etc/keystone/admin-openrc.sh

一、先创建lvm卷类型
​[root@controller  /]#cinder type-create lvm
​二、创建名为blockvolume大小为2G的云硬盘
​[root@controller  /]#cinder create --volume-type lvm --display-name blockvolume 2
​三、云硬盘扩容
​[root@controller  /]#lvdisplay /dev/mapper/cinder--volumes-volume--e8fa3391--867c--4fe0--84db--042498969a83
​*查看卷名称和详细信息
​[root@controller  /]#cinder list
​*查看cinder卷名称
​[root@controller  /]#cinder extend blockvolume 3
​*扩展到3G

六、快照管理

例题一、cinder创建快照并导出

使用自己搭建的openstack云平台,将云主机VM1保存为qcow2格式的快照并保存到controller节点/root/cloudsave目录下,保存名字为csccvm.qcow2。

在web中创建快照生成镜像
glance image-list 查看生成的镜像
glance image-download --file /root/cloudsave/csccvm.qcow2 239cb73a-f05a-46fd-affe-a28a50341168(imageID) --progress

OpenStacka运维题:

例题一、创建镜像

使用自己搭建的openstack云平台,使用http:// /cirros-0.3.4-x86_64-disk.img镜像,使用命令创建一个名为cirros的镜像。

[root@controller  /]#openstack image create --disk-format qcow2 --container-format bare --file /opt/iaas/images/CentOS_7.2_x86_64.qcow2 cirros --public --project admin		
*--disk-format 硬盘格式qcow2
*--container-format 容器格式为bare
*--public 公有镜像
*--project 项目为admin
*--file 后跟文件(镜像)地址
例题二、swift创建容器

在控制节点和计算节点上分别使用iaas-install-swift-controller.sh和iaas-install-swift-compute.sh脚本安装Swift服务并创建test容器。

[root@controller  /]# iaas-install-swift-controller.sh
[root@controller  /]# swift post test
*使用swift post后跟容器名
例题三、实例类型管理

在OpenStack私有云平台上,使用命令创建一个名为Fmin,ID为1,内存为1024 MB,磁盘为10 GB,vcpu数量为1的云主机类型。

[root@controller /opt/iaas/iaas-repo]# nova flavor-create Fmin 1 1024 10 1

格式:nova flavor-create <Name> <ID> <RAW><Disk> <vCPUs>
例题四、网络管理

在openstack私有云平台上,使用命令创建云主机外部网络extnet,子网extsubnet,虚拟机浮动 IP 网段为172.18.x.0/24(其中x是考位号), 网关为172.18.x.1,网络使用vlan模式。

(1)首先创建外部网络

[root@controller /opt/iaas/iaas-repo]# openstack network create --project admin --provider-network-type vlan --provider-physical-network provider --external extnet

(2)创建外部网络子网

[root@controller /opt/iaas/iaas-repo]# openstack subnet create --network extnet --subnet-range 172.18.X.0/24 --gateway 172.18.X.1 --allocation-pool start=172.18.X.10,end=172.18.X.200 --dhcp extsubnet
例题五、网络管理

在openstack私有云平台上,通过使用命令创建云主机内网intnet,子网intsubnet,虚拟机子网 IP 网段为10.10.x.0/24(其中x是考位号),网关为10.10.x.1。

(1)首先创建内部网络

[root@controller /opt/iaas/iaas-repo]# openstack network create --internal intnet

(2)创建内部网络子网

[root@controller /opt/iaas/iaas-repo]# openstack subnet create --subnet-range 10.10.x.0/24 --gateway 10.10.x.1 --dhcp --network intnet intsubnet
例题六、网络管理

添加名为 ext-router 的路由器,配置路由接口地址,完成内网子网intsubnet和外部网络extnet的连通。

[root@controller /opt/iaas/iaas-repo]# openstack router create ext-router

[root@controller /opt/iaas/iaas-repo]# openstack router add subnet ext-subnet intsubnet

[root@controller /opt/iaas/iaas-repo]# openstack router set --enbale --enable-snat --external-gateway extnet ext-router
例题七、创建实例

在openstack私有云平台上,基于“cirros” 镜像、1vCPU/1G /10G 的flavor、 intsubnet的网络,绑定浮动IP,使用命令创建一台虚拟机VM1,启动VM1,并使用PC机能远程登录到VM1。

[root@controller /opt/iaas/iaas-repo]# openstack flavor create --ram 1024 --disk 10 --vcpus 1 flavor

[root@controller /opt/iaas/iaas-repo]# nova boot --flavor flavor --image cirros --nic net-name=intnet --security-groups default VM1

(1) 创建浮动IP地址

[root@controller /opt/iaas/iaas-repo]# neutron floatingip-create extent

[root@controller /opt/iaas/iaas-repo]# neutron floatingip-list

(2)绑定浮动IP

[root@controller /opt/iaas/iaas-repo]# neutron floatingip-list

[root@controller /opt/iaas/iaas-repo]# neutron port-list

[root@controller /opt/iaas/iaas-repo]# neutron floatingip-associate --fixed-ip-address 10.10.x.3 9fb1f908-167c-4f48-9113-1d061136eff1(floatingip的ID) 2c773859-32cb-47f3-80c2-79432bd8e6e3(内网prot的ID)
连接上去需要修改安全组规则,如果可以使用图形化界面可以到Web删除
[root@controller /opt/iaas/iaas-repo]#Openstack help security
[root@controller /opt/iaas/iaas-repo]#Openstack security group list
[root@controller /opt/iaas/iaas-repo]#Opensatck security group rule list
[root@controller /opt/iaas/iaas-repo]#Openstack security group rule delete ID 
[root@controller /opt/iaas/iaas-repo]#Openstack help security group rule create 
[root@controller /opt/iaas/iaas-repo]#Openstack security group rule create --egress --ethertype IPv4 安全组ID 放行所有IPv4流量出去
[root@controller /opt/iaas/iaas-repo]#Openstack security group rule create --ingress --ethertype IPv4 安全组ID 放行所有IPv4流量进入
[root@controller /opt/iaas/iaas-repo]#Openstack security group rule create --ingress --protocol icmp 安全组ID 允许ICMP流量进去
[root@controller /opt/iaas/iaas-repo]#Openstack security group rule create --egress --protocol icmp/udp 安全组ID 允许ICMP出口  
例题八、卷管理

在openstack私有云平台上,创建一个名为“lvm”的卷类型,创建1块卷类型为lvm的40G云盘,并附加到虚拟机VM1上。

[root@controller /opt/iaas/iaas-repo]# openstack volume type create lvm

[root@controller /opt/iaas/iaas-repo]# openstack volume create --type lvm --size 40 v1

[root@controller /opt/iaas/iaas-repo]# openstack server add volume VM1 v1
例题九、RAID磁盘阵列

在虚拟机VM1上,使用附加的云盘,划分为4个10G的分区,创建一个raid 5,其中1个分区作为热备。

[root@controller /opt/iaas/iaas-repo]# fdisk /dev/vdb #输入m可以查看fdisk帮助,创建4个分区

[root@controller /opt/iaas/iaas-repo]# Mdadm -Cv /dev/md5 -l 5 -n 3 -x 1 /dev/vdb{1,2,3,4}

或者使用一下命令指定热备盘:

[root@controller /opt/iaas/iaas-repo]# Mdadm -Cv /dev/md5 -l 5 -n 3 /dev/vdb{1,2,3} --spare-devices=1 /dev/vdb4 
例题十、Shell脚本释放实例

在Controller节点中编写/root/openstack/deletevm.sh的shell脚本,释放虚拟机VM1,执行脚本完成实例释放。

[root@controller /opt/iaas/iaas-repo]# source /etc/keystone/admin-openrc.sh

[root@controller /opt/iaas/iaas-repo]# vi /root/openstack/deletevm.sh

openstack server stop vm1

openstack server delete vm1

[root@controller /opt/iaas/iaas-repo]# chmod 755 /root/openstack/deletevm.sh #给脚本执行权限

[root@controller /root/openstack]# ./deletevm.sh #执行脚本