安装 openstack 基础组件准备
本次安装 T 版,各种组件最好安装正式版
Alpha:是内部测试版,一般不向外部发布,通常只在软件开发者内部交流,该版本软件的 Bug较多,需要继续修改。
Dev:在软件开发中多用于开发软件的代号,相比于 beta 版本,dev 版本可能出现的更早,甚至还没有发布。这也就意味着,dev 版本的软件通常比 beta 版本的软件更不稳定
Beta:也是测试版,这个阶段的版本会一直加入新的功能。在 Alpha 版之后推出。
RC:(Release Candidate) 就是发行候选版本,RC 版不会再加入新的功能了,主要着重于除错。
GA:General Availability,正式发布的版本。
Release:该版本意味“最终版本”,在前面版本的一系列测试版之后,终归会有一个正式版本,是最终交付用户使用的一个版本。该版本有时也称为标准版。
注意事项
1、openstack管理端需要运行多个服务,所以内存需要大一些,最少4G;openstack管理端是不运行虚拟机的,可以不开启内核的虚拟化功能;
2、安装openstack时先安装认证服务,只有安装完认证服务(认证服务是使用apache运行的)之后,才可以创建账号进行管理,然后安装镜像服务、计算服务、网络服务,计算服务和网络服务分为管理端和客户端,所以需要在openstack的管理端安装计算服务和网络服务的管理端,在创建虚拟机的node节点上安装计算服务和网络服务的客户端,最后安装dashboard服务,openstack各种组件的API都是通过apache运行的;
openstack的管理端负责创建虚拟机时的调度;
通过openstack管理端创建虚拟机的相关数据最终都会记录到mysql中;node节点没有权限往数据库中写数据,只有控制端有权限,并且node节点与控制端通讯是通过rabbitmq间接通讯,node节点会监听rabbitmq,控制端也会监听rabbitmq,控制端把创建虚拟机的指令发送到rabbitmq,由监听rabbitmq指定队列的node节点接收消息并创建虚拟机;
3、在使用RDO软件包时(安装openstack时)禁用EPEL,因为EPEL中的更新会破坏向后兼容性。或者,最好是使用yum-versionlock插件固定封装版本。
安装前准备
1、yum list centos-release-opensack* #查看yum能够安装的openstack版本
实现架构
(01)
openstack-controler
https://docs.openstack.org/install-guide/overview.html #安装openstack前需要的硬件及系统配置
https://docs.openstack.org/install-guide/environment-packages-rdo.html #安装参考文档
1、hostnamectl set-hostname openstack-controler1.example.local #修改控制端主机名
2、yum install centos-release-openstack-train.noarch -y
#安装官方openstack T版的yum源;node节点、controler节点、mysql服务器都需要安装
3、yum install https://rdoproject.org/repos/rdo-release.rpm
#安装RDO存储库RPM以启用OpenStack存储库;安装rdo源,这个源中保存了比较新并且稳定的openstack的包;node节点、controler节点、mysql服务器都需要安装
4、yum install python-openstackclient -y
#安装openstack客户端,会生成openstack的相关命令;只安装在node节点和controler节点
5、yum install openstack-selinux -y
#如果启用SELinux。安装 openstack-selinux 软件包以自动管理OpenStack服务的安全策略,就算没有启用selinux也可以安装;只安装在node节点和controler节点
6、yum install python2-PyMySQL -y
#此包用于openstack的控制端连接mysql所需要的模块,如果不安装,则无法连接数据库;此包只安装在控制端
7、yum install python-memcached -y
#安装python连接memcached的模块,只安装在控制端;如果不安装,则无法连接到memcached,无法连接到memcached,则账号就无法登录,因为账号信息是写入到memcache中的
准备mysql服务器
https://docs.openstack.org/install-guide/environment-sql-database-rdo.html #配置数据库
1、hostnamectl set-hostname openstack-mysql.example.local
2、yum install centos-release-openstack-train.noarch -y
#在openstack环境中,安装数据库及其他组件都需要使用openstack的官方源安装,否则会出现版本不兼容;openstack官方源中的数据库版本比centos的更新一些
3、yum install https://rdoproject.org/repos/rdo-release.rpm
4、yum install mariadb mariadb-server -y
5、vim /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 0.0.0.0 #指定监听地址
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096 #指定最大连接
collation-server = utf8_general_ci #字符集
character-set-server = utf8
6、systemctl start mariadb
7、systemctl enable mariadb
准备haproxy服务器
1、hostnamectl set-hostname openstack-ha1.example.local
2、yum install keepalived haproxy -y
3、vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_iptables #centos必须添加此选项,否则会生成iptables规则,造成无法访问
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 58
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.31.7.248 dev eth0 label eth0:0
}
}
4、systemctl restart keepalived.service
5、systemctl enable keepalived.service
6、其余节点尝试VIP是否能够ping通:ping 172.31.7.248
7、vim /etc/haproxy/haproxy.cfg
listen openstack-mysql-3306
mode tcp
bind 172.31.7.248:3306
server 172.31.7.103 172.31.7.103:3306 check inter 3s fall 3 rise 5
listen openstack-rabbitmq-5672
mode tcp
bind 172.31.7.248:5672
server 172.31.7.103 172.31.7.103:5672 check inter 3s fall 3 rise 5
listen openstack-memcached-11211
mode tcp
bind 172.31.7.248:11211
server 172.31.7.103 172.31.7.103:11211 check inter 3s fall 3 rise 5
8、systemctl restart haproxy.service
9、systemctl enable haproxy.service
10、在控制端通过telnet命令,测试这几个端口是否能够访问:telnet 172.31.7.248 5672
安装rabbitmq
https://docs.openstack.org/install-guide/environment-messaging-rdo.html #centos帮助文档
所有创建虚拟机的指令,控制端都会发送到rabbitmq,node节点监听rabbitmq
rabbitmq可以与mysql在同一个机器
1、vim /etc/hosts #rabbitmq需要识别主机名才能够启动,需要把主机名解析放到本地的hosts文件中
172.31.7.103 openstack-mysql.example.local openstack-mysql
#添加本机IP地址解析,并且必须是一个全称主机名,一个是短主机名
2、yum install rabbitmq-server -y
#必须安装官方openstack源,这样rabbitmq版本才会新一些,与其他组件才兼容
3、systemctl start rabbitmq-server.service #监听端口是5672
4、systemctl enable rabbitmq-server.service
5、rabbitmqctl add_user openstack openstack123
#创建一个openstack账号,用于controler和node节点连接rabbitmq的认证
6、rabbitmqctl set_permissions openstack ".*" ".*" ".*"
#给openstack账号正则配置,拥有读写权限
7、rabbitmq-plugins list
rabbitmq-plugins enable rabbitmq_management #开启rabbitmq的web管理界面的插件,端口为15672
8、浏览器访问 http://172.31.7.103:15672 #账号名密码都是guest
安装memcached
https://docs.openstack.org/install-guide/environment-memcached-rdo.html #centos参考文档
安装memcached是用于存储session信息;服务身份验证机制使用Memcached来缓存令牌
在登录openstack的dashboard时,会产生一些session信息,这些session信息会存放到memcached中
1、yum install memcached -y
2、vim /etc/sysconfig/memcached
PORT="11211" #监听端口
USER="memcached"
MAXCONN="1024"
CACHESIZE="1024" #指定memcached使用的内存大小
OPTIONS="-l 0.0.0.0,::1" #指定监听地址
3、systemctl start memcached.service
4、systemctl enable memcached.service