安裝 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