安装虚拟机
这个教程网上很多,不再赘述了,虚拟机配置如下:
- RAM:大于10GB,否则OpenStack安装完成后,虚拟机运行会卡顿。
- ROM:100GB,分两块磁盘,sda用于存放CentOS系统,sdb用于存放LVM(cinder的数据卷)。
- 网卡:enss33用于虚拟机访问网络,enss37用于OpenStack组件之间的通信(all in one的方式,实际上不需要用到enss37网卡)
准备工作
禁用SELinux
作用:不禁用SELinux可能会导致openstack newton Apache无法启动。
错误如下:"Devstack fail to start apache2 -“Address already in use”:“coild not bind to address”
解决方式:配置/etc/selinux/config,关闭SELINUX
代码语言:javascript复制[root@controller /]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。
关闭防火墙
作用:免去配置OpenStack各个节点时,需要不断手动开启端口的麻烦。但是在实际生产环境中绝对不允许这样做,这会引起安全问题。
代码语言:javascript复制[root@controller ~]# systemctl stop firewalld
[root@controller ~]# systemctl disable firewalld
配置网卡
CentOS系统默认使用DHCP(动态主机配置协议)分配网卡IP。此处,建议使用static(静态)网卡IP,因为在VMWare的虚拟机重启之后,虚拟机的网卡IP可能会变化,这就会导致OpenStack其他节点配置的网卡IP无法使用。
查看当前网卡IP
代码语言:javascript复制[root@controller /]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.83.139 netmask 255.255.255.0 broadcast 192.168.83.255
inet6 fe80::c62f:bd78:ba20:b81 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:5b:0e:1c txqueuelen 1000 (Ethernet)
RX packets 15733 bytes 10884363 (10.3 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 11840 bytes 6242032 (5.9 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
配置网卡IP
代码语言:javascript复制[root@controller /]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=038e74ab-c77d-4f83-b67b-dabde3a03c1d
DEVICE=ens33
#更改的部分
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.83.139
GATEWAY=192.168.83.2
NETMASK=255.255.255.0
DNS1=114.114.114.114
若需要配置第二张网卡enss37,则将上面的NAME、DEVICE更改后,删除UUID,并配置新的IPADDR,即可。
配置主机名
代码语言:javascript复制#设置主机名
[root@controller ~]# hostnamectl set-hostname controller
#查看设置
[root@controller ~]# hostname
controller
#修改hosts文件:controller域名,解析时指向本机的网卡IP
[root@controller ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.83.139 controller
设置时区
代码语言:javascript复制[root@controller ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime cp: overwrite ‘/etc/localtime’? y
[root@controller ~]# date Tue Jul 20 16:13:44 CST 2021
安装基础软件
注意:安装软件时,如果出现安装失败的情况,可能是因为网络原因导致的。只需要再次执行安装命令即可。
安装NTP
用于同步各个节点的时间。需要安装Chrony,通常情况下安装在控制器节点,其他节点则同步控制节点的时间,来达到各个节点时间一致的效果。
代码语言:javascript复制#安装chrony
[root@controller /]# yum install chrony -y
#配置(可选)
[root@controller /]# vim /etc/chrony.conf
server 0.centos.pool.ntp.org iburst
#启动软件、设置开机启动
[root@controller /]# systemctl start chronyd.service
[root@controller /]# systemctl enable chronyd.service
更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。
添加OpenStack软件源
网络上发布的OpenStack存在多个不同版本,eg:Victoria、Queens、Train等。本次使用的时Queens版本。
代码语言:javascript复制#添加Queens版本源
[root@controller ~]# yum install centos-release-openstack-queens -y
#升级软件包
[root@controller ~]# yum upgrade -y
#安装OpenStack Client
[root@controller ~]# yum install python-openstackclient -y
安装SQL数据库
通常情况下,数据库安装在控制节点上,用于存储OpenStack的数据。
代码语言:javascript复制#安装SQL
[root@controller ~]# yum install mariadb mariadb-server python2-PyMySQL -y
#配置SQL
[root@controller /]# vim /etc/my.cnf.d/openstack.cnf
[mysqld]
#修改为本机的网卡IP
bind-address = 192.168.83.139
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
#设置开机自启、启动SQL
[root@controller /]# systemctl enable mariadb.service
[root@controller /]# systemctl start mariadb.service
#设置SQL数据库的root账号、密码
[root@controller /]# mysql_secure_installation
安装消息队列
消息队列服务通常安装在控制器节点上。用于协调服务之间的操作和状态信息。
代码语言:javascript复制#安装MQ
[root@controller /]# yum install rabbitmq-server
#设置开机自启、启动MQ
[root@controller /]# systemctl enable rabbitmq-server.service
[root@controller /]# systemctl start rabbitmq-server.service
#添加MQ用户,设置密码
[root@controller /]# rabbitmqctl add_user openstack RABBIT_PASS
#允许openstack用户进行配置、写入和读取访问
[root@controller /]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
安装Memcached
Memcached 服务通常安装在控制器节点上。服务的身份服务认证机制使用 Memcached 来缓存token令牌。
代码语言:javascript复制#安装
[root@controller /]# yum install memcached python-memcached
#配置
[root@controller /]# vim /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
#新增controller域名,其他节点可以通过该域名直接访问
OPTIONS="-l 127.0.0.1,::1,controller"
#设置开机自启、启动软件
[root@controller /]# systemctl enable memcached.service
[root@controller /]# systemctl start memcached.service
安装ETCD数据库
用于分布式密钥锁定、存储配置、跟踪服务实时性和其他场景。
代码语言:javascript复制#安装etcd
[root@controller /]# yum install etcd
#配置etcd:
#ETCD_INITIAL_CLUSTER, ETCD_INITIAL_ADVERTISE_PEER_URLS, ETCD_ADVERTISE_CLIENT_URLS,ETCD_LISTEN_CLIENT_URLS设置为控制节点的IP(即:本机的网卡IP)
[root@controller /]# vim /etc/etcd/etcd.conf
[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.83.139:2380"
ETCD_LISTEN_CLIENT_URLS="http://localhost:2379,http://192.168.83.139:2379"
ETCD_NAME="controller"
[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.83.139:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.83.139:2379"
ETCD_INITIAL_CLUSTER="controller=http://192.168.83.139:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"
#设置开机自启、启动软件
[root@controller /]# systemctl enable etcd
[root@controller /]# systemctl start etcd
本次安装OpenStack所有的组件,均使用默认密码。
参考链接:https://blog.csdn.net/qq_37279311/ article/details/119114048