OpenStack+CentOS7.6 云平台环境搭建 — 1.操作系统环境配置及基础服务创建
摘要
①控制节点(controller)
控制节点(controller)上运行身份服务,镜像服务,计算节点管理,网络管理,各种网络代理和仪表板。它还包括支持服务,如SQL数据库,消息队列和NTP。
可选地,控制器节点运行块存储,对象存储,编排和遥测服务的部分。
注:计算节点上需要至少配置两块网卡。
②计算节点(Nova)
计算节点运行操作实例的 计算部分。默认情况下使用 :`KVM 或QUME作为hypervisor。计算节点同样运行网络服务代理,用来连接实例到虚拟网络,通过:security groups 为实例提供防火墙服务。instances via .
注:可以部署超过一个计算节点。但每个结算节点至少需要两块网卡。
③块设备存储(Cinder)
可选的块存储节点上包含了磁盘,块存储服务和共享文件系统会向实例提供这些磁盘。
为了简单起见,计算节点和本节点之间的服务流量使用管理网络。生产环境中应该部署一个单独的存储网络以增强性能和安全。
注:可以部署超过一个块存储节点。但每个块存储节点要求至少一块网卡。
④对象存储
可选的对象存储节点包含了磁盘。对象存储服务用这些磁盘来存储账号,容器和对象。
为了简单起见,计算节点和本节点之间的服务流量使用管理网络。生产环境中应该部署一个单独的存储网络以增强性能和安全。
一、部署环境
主机名 |
内存 |
硬盘 |
网卡 |
系统 |
ct |
8 |
300+300 |
VM1:192.168.100.100 |
Centos7.6 |
NAT:20.0.0.10 |
||||
c1 |
8 |
300+300 |
VM1:192.168.100.101 |
Centos7.6 |
NAT:20.0.0.20 |
||||
c2 |
8 |
300+300 |
VM1:192.168.100.102 |
Centos7.6 |
NAT:20.0.0.30 |
二、基础环境配置(所有节点,ct上演示)
2.1、修改主机名
1 [root@server1 ~]# hostnamectl set-hostname ct
2 [root@server1 ~]# su
3
4 [root@server2 ~]# hostnamectl set-hostname c1
5 [root@server2 ~]# su
6
7 [root@server3 ~]# hostnamectl set-hostname c2
8 [root@server3 ~]# su
2.2、基础环境依赖包
1 [root@ct ~]# yum -y install net-tools bash-completion vim gcc gcc-c++ make pcre pcre-devel expat-devel cmake bzip2
2 [root@ct ~]# yum -y install centos-release-openstack-train python-openstackclient openstack-selinux openstack-utils
1 python-openstackclient #安装 OpenStack 客户端
2 openstack-selinux #RHEL和 CentOS 默认启用 SELinux 。安装 openstack-selinux 包实现对OpenStack服务的安全策略进行自动管理
2.3、设置网卡参数
1 配置NAT网卡
2 [root@ct etcd]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
3 TYPE=Ethernet
4 PROXY_METHOD=none
5 BROWSER_ONLY=no
6 BOOTPROTO=static
7 IPADDR=20.0.0.10
8 NETMASK=255.255.255.0
9 GATEWAY=20.0.0.2
10 DNS=20.0.0.2
11 DEFROUTE=yes
12 IPV4_FAILURE_FATAL=no
13 IPV6INIT=yes
14 IPV6_AUTOCONF=yes
15 IPV6_DEFROUTE=yes
16 IPV6_FAILURE_FATAL=no
17 IPV6_ADDR_GEN_MODE=stable-privacy
18 NAME=ens33
19 UUID=633054e7-1f23-4fd7-9007-24c491adff63
20 DEVICE=ens33
21 ONBOOT=yes
22
23 配置VM1网卡
24 [root@ct etcd]# cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens37
25 [root@ct etcd]# vi /etc/sysconfig/network-scripts/ifcfg-ens37
26 TYPE=Ethernet
27 PROXY_METHOD=none
28 BROWSER_ONLY=no
29 BOOTPROTO=static
30 IPADDR=192.168.100.100
31 NETMASK=255.255.255.0
32 DEFROUTE=yes
33 IPV4_FAILURE_FATAL=no
34 IPV6INIT=yes
35 IPV6_AUTOCONF=yes
36 IPV6_DEFROUTE=yes
37 IPV6_FAILURE_FATAL=no
38 IPV6_ADDR_GEN_MODE=stable-privacy
39 NAME=ens37
40 DEVICE=ens37
41 ONBOOT=yes
42
43 重启网卡并查看
44 [root@ct ~]# systemctl restart network
45 [root@ct ~]# ip addr
2.4、配置Hosts
1 [root@ct ~]# vi /etc/hosts
2 192.168.100.100 ct
3 192.168.100.101 c1
4 192.168.100.102 c2
5
6 [root@ct ~]# systemctl stop firewalld
7 [root@ct ~]# systemctl disable firewalld
8 [root@ct ~]# setenforce 0
9 [root@ct ~]# vim /etc/sysconfig/selinux
10 SELINUX=disabled
2.5、免交互
1 非对称密钥
2 [root@ct ~]# ssh-keygen -t rsa #一直空格
3 [root@ct ~]# ssh-copy-id ct
4 [root@ct ~]# ssh-copy-id c1
5 [root@ct ~]# ssh-copy-id c2
2.6、配置DNS
1 [root@ct ~]# vim /etc/resolv.conf
2 nameserver 8.8.8.8
2.7、控制节点ct时间同步配置
1 [root@ct ~]# yum install chrony -y
2 [root@ct ~]# vim /etc/chrony.conf
3 #4-7行注释
4 #8行ct添加两行
5 server ntp6.aliyun.com iburst
6 allow 192.168.100.0/24
7
8 #8行另外两个节点上添加一行
9 server ct iburst
10
11 [root@ct ~]# systemctl enable chronyd
12 [root@ct ~]# systemctl restart chronyd
13
14 使用 chronyc sources 命令查询时间同步信息
15 [root@ct ~]# chronyc sources
16 210 Number of sources = 1
17 MS Name/IP address Stratum Poll Reach LastRx Last sample
18 ===============================================================================
19 ^* 203.107.6.88 2 9 377 73 -2993us[-4411us] +/- 19ms
20
21 设置周期性任务
22 [root@ct ~]# crontab -e
23 */30 * * * * /usr/bin/chronyc sources >> /var/log/chronyc.log
24 [root@ct ~]# crontab -l
25 */2 * * * * /usr/bin/chronyc sources >> /var/log/chronyc.log
三、配置服务(控制节点)
3.1、安装、配置MariaDB
1 [root@ct ~]# yum -y install mariadb mariadb-server python2-PyMySQL
2
3 #此包用于openstack的控制端连接mysql所需要的模块,如果不安装,则无法连接数据库;此包只安装在控制端
4 [root@ct ~]# yum -y install libibverbs
5
6 添加MySQL子配置文件,增加如下内容
7 [root@ct ~]# vim /etc/my.cnf.d/openstack.cnf
8 [mysqld]
9 bind-address = 192.168.100.100 #控制节点局域网地址
10 default-storage-engine = innodb #默认存储引擎
11 innodb_file_per_table = on #每张表独立表空间文件
12 max_connections = 4096 #最大连接数
13 collation-server = utf8_general_ci #默认字符集
14 character-set-server = utf8
15
16 开机自启动、开启服务
17 [root@ct my.cnf.d]# systemctl enable mariadb
18 [root@ct my.cnf.d]# systemctl start mariadb
19
20 执行MariaDB 安全配置脚本
21 [root@ct my.cnf.d]# mysql_secure_installation
22 Enter current password for root (enter for none): #回车
23 OK, successfully used password, moving on...
24 Set root password? [Y/n] Y
25 Remove anonymous users? [Y/n] Y
26 ... Success!
27 Disallow root login remotely? [Y/n] N
28 ... skipping.
29 Remove test database and access to it? [Y/n] Y
30 Reload privilege tables now? [Y/n] Y
3.2、安装RabbitMQ
所有创建虚拟机的指令,控制端都会发送到rabbitmq,node节点监听rabbitmq
1 [root@ct ~]# yum -y install rabbitmq-server
2
3 配置服务,启动RabbitMQ服务,并设置其开机启动
4 [root@ct ~]# systemctl enable rabbitmq-server.service
5 [root@ct ~]# systemctl start rabbitmq-server.service
6
7 创建消息队列用户,用于controler和node节点连接rabbitmq的认证
8 [root@ct ~]# rabbitmqctl add_user openstack RABBIT_PASS
9 Creating user "openstack"
10
11 配置openstack用户的操作权限(正则,配置读写权限)
12 [root@ct ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
13 Setting permissions for user "openstack" in vhost "/"
14
15 查看rabbitmq插件列表
16 [root@ct ~]# rabbitmq-plugins list
17 Configured: E = explicitly enabled; e = implicitly enabled
18 | Status: [failed to contact rabbit@ct - status not shown]
19 |/
20 [e ] amqp_client 3.6.16
21 [e ] cowboy 1.0.4
22 [e ] cowlib 1.0.2
23 [ ] rabbitmq_amqp1_0 3.6.16
24 [ ] rabbitmq_auth_backend_ldap 3.6.16
25 [ ] rabbitmq_auth_mechanism_ssl 3.6.16
26 [ ] rabbitmq_consistent_hash_exchange 3.6.16
27 [ ] rabbitmq_event_exchange 3.6.16
28 [ ] rabbitmq_federation 3.6.16
29 [ ] rabbitmq_federation_management 3.6.16
30 [ ] rabbitmq_jms_topic_exchange 3.6.16
31 [E ] rabbitmq_management 3.6.16
32 [e ] rabbitmq_management_agent 3.6.16
33 [ ] rabbitmq_management_visualiser 3.6.16
34 [ ] rabbitmq_mqtt 3.6.16
35 [ ] rabbitmq_random_exchange 3.6.16
36 [ ] rabbitmq_recent_history_exchange 3.6.16
37 [ ] rabbitmq_sharding 3.6.16
38 [ ] rabbitmq_shovel 3.6.16
39 [ ] rabbitmq_shovel_management 3.6.16
40 [ ] rabbitmq_stomp 3.6.16
41 [ ] rabbitmq_top 3.6.16
42 [ ] rabbitmq_tracing 3.6.16
43 [ ] rabbitmq_trust_store 3.6.16
44 [e ] rabbitmq_web_dispatch 3.6.16
45 [ ] rabbitmq_web_mqtt 3.6.16
46 [ ] rabbitmq_web_mqtt_examples 3.6.16
47 [ ] rabbitmq_web_stomp 3.6.16
48 [ ] rabbitmq_web_stomp_examples 3.6.16
49 [ ] sockjs 0.3.4
50
51 开启rabbitmq的web管理界面的插件,端口为15672
52 [root@ct ~]# rabbitmq-plugins enable rabbitmq_management
53 The following plugins have been enabled:
54 mochiweb
55 webmachine
56 rabbitmq_web_dispatch
57 amqp_client
58 rabbitmq_management_agent
59 rabbitmq_management
60
61 Applying plugin configuration to rabbit@likeadmin... started 6 plugins.
62
63 检查端口(25672 5672 15672)
64 [root@ct ~]# ss -anpt | grep 5672
65 LISTEN 0 128 *:25672 *:* users:(("beam.smp",pid=35087,fd=46))
66 LISTEN 0 128 *:15672 *:* users:(("beam.smp",pid=35087,fd=57))
67 LISTEN 0 128 :::5672 :::* users:(("beam.smp",pid=35087,fd=55))
网页访问http://20.0.0.10:15672,默认账户密码均为guest
3.3、安装memcached
3.3.1、作用
安装memcached是用于存储session信息;服务身份验证机制使用Memcached来缓存令牌 在登录openstack的dashboard时,会产生一些session信息,这些session信息会存放到memcached中
3.3.2、 安装Memcached
1 [root@ct ~]# yum install -y memcached python-memcached
2 #python-*模块在OpenStack中起到连接数据库的作用
3
4 修改Memcached配置文件
5 [root@ct ~]# cat /etc/sysconfig/memcached
6 PORT="11211"
7 USER="memcached"
8 MAXCONN="1024"
9 CACHESIZE="64"
10 OPTIONS="-l 127.0.0.1,::1,ct"
11
12 [root@ct ~]# systemctl enable memcached
13 [root@ct ~]# systemctl start memcached
14
15 [root@ct ~]# netstat -nautp | grep 11211
3.4、安装etcd
1 [root@ct ~]# yum -y install etcd
2
3 修改etcd配置文件
4 [root@ct ~]# cd /etc/etcd/
5 [root@ct etcd]# ls
6 etcd.conf
7 [root@ct etcd]# vim etcd.conf
8 ETCD_DATA_DIR="/var/lib/etcd/default.etcd" #数据目录位置
9 ETCD_LISTEN_PEER_URLS="http://192.168.100.100:2380" #监听其他etcd member的url(2380端口,集群之间通讯,域名为无效值)
10 ETCD_LISTEN_CLIENT_URLS="http://192.168.100.100:2379" #对外提供服务的地址(2379端口,集群内部的通讯端口)
11 ETCD_NAME="ct" #集群中节点标识(名称)
12 ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.100.100:2380"
13 ETCD_ADVERTISE_CLIENT_URLS="http://192.168.100.100:2379
14 ETCD_INITIAL_CLUSTER="ct=http://192.168.100.100:2380" #该节点成员的URL地址,2380端口:用于集群之间通讯。
15 ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01" #集群唯一标识
16 ETCD_INITIAL_CLUSTER_STATE="new" #初始集群状态,new为静态,若为existing,则表示此ETCD服务将尝试加入已有的集群
17 若为DNS,则表示此集群将作为被加入的对象
18
19 开机自启动、开启服务,检测端口
20 [root@ct ~]# systemctl enable etcd.service
21 [root@ct ~]# systemctl start etcd.service
22 [root@ct ~]# netstat -anutp |grep 2379
23 [root@ct ~]# netstat -anutp |grep 2380
注:至此OpenStack基础环境已基本搭建完成