文章目錄
- OpenStack環境部署
- 【部署思路】
- 基礎環境配置:(所有節點,ct上演示)
- 配置OpenStack系統環境配置(僅在控制節點ct上安裝)
- Keystone 組件的搭建
OpenStack環境部署
虛擬機設備資訊及需求
控制節點(ct)
CPU:雙核雙執行緒-CPU虛擬化開啟

記憶體:8G 硬碟:300G+300G(CEPH塊存盤)
雙網卡:VM1(局域網)192.168.100.10 VM8(NAT):20.0.0.14
作業系統:Centos 7.6(1810)最小化安裝
計算節點c1
CPU:雙核雙執行緒-CPU虛擬化開啟
記憶體:8G 硬碟:300G+300G(CEPH塊存盤)
雙網卡:VM1(局域網)192.168.100.20 VM8(NAT):20.0.0.15
作業系統:Centos 7.6(1810)-最小化安裝
計算節點c2
CPU:雙核雙執行緒-CPU虛擬化開啟
記憶體:6G 硬碟:300G+300G(CEPH塊存盤)
雙網卡:VM1(局域網)192.168.100.30 VM8(NAT):20.0.0.16
作業系統:Centos 7.6(1810)-最小化安裝
【部署思路】
一、配置作業系統+OpenStack運行環境
二、配置OpenStack平臺基礎服務(rabbitmq、mariadb、memcache、Apache)
三、配置OpenStack keystone組件
四、配置OpenStack Glance組件
五、配置placement服務
六、配置OpenStack Nova組件
七、配置OpenStack Neutron組件
八、配置OpenStack dashboard組件
九、配置OpenStack Cinder組件
十、常用云主機操作
基礎環境配置:(所有節點,ct上演示)
centos7的安裝與基本配置
[root@server4 ~]# hostnamectl set-hostname ct
[root@server4 ~]# bash
[root@server5 ~]# hostnamectl set-hostname c1
[root@server5 ~]# bash
[root@server6 ~]# hostnamectl set-hostname c2
[root@server6 ~]# bash
基礎環境依賴包
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
添加網卡,并設定網卡優先級
VM8(NAT)
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=20.0.0.14 (c1,c2分別設定為20.0.0.15 20.0.0.16)
NETMASK=255.255.255.0
GATEWAY=20.0.0.2
DNS=20.0.0.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV4_ROUTE_METRIC=90 #路由優先級,設定VMnet8網卡優先
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=fb3d5044-2ae8-484a-89b2-a098c5d9b550
DEVICE=ens33
ONBOOT=yes
VM1(僅主機模式)
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.100.10 (c1,c2分別設定為192.168.100.20 192,168.200.30)
NETMASK=255.255.255.0
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=ens37
DEVICE=ens37
ONBOOT=yes
附加:添加之后需要重啟網卡
[root@ct ~]# systemctl restart network
配置DNS
[root@ct ~]# vim /etc/resolv.conf
nameserver 20.0.0.2
附加:
(查看是否上網:如果提示沒有該主機名修改一下DNS的名稱直接改為DNS1)
添加主機映射
[root@ct ~]# vi /etc/hosts //添加的是局域網
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.10 ct
192.168.100.20 c1
192.168.100.30 c2
三臺主機設定免互動登錄(非對稱密鑰)
[root@ct ~]# ssh-keygen -t rsa //一直回車
[root@ct ~]# ssh-copy-id ct
[root@ct ~]# ssh-copy-id c1
[root@ct ~]# ssh-copy-id c2
控制節點ct時間同步配置
#主機ct
[root@ct ~]# yum install chrony -y
[root@ct ~]# vim /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
3 #server 0.centos.pool.ntp.org iburst //注釋以下4行
4 #server 1.centos.pool.ntp.org iburst
5 #server 2.centos.pool.ntp.org iburst
6 #server 3.centos.pool.ntp.org iburst
7 server ntp6.aliyun.com iburst #添加阿里云時間同步
8 allow 192.168.100.0/24 #允許100網段同步自己的時間
[root@ct ~]# systemctl enable chronyd
[root@ct ~]# systemctl restart chronyd
#主機c1,c2
[root@c1 ~]# yum install chrony -y
[root@c1 ~]# vi /etc/chrony.conf
3 #server 0.centos.pool.ntp.org iburst //注釋以下4行
4 #server 1.centos.pool.ntp.org iburst
5 #server 2.centos.pool.ntp.org iburst
6 #server 3.centos.pool.ntp.org iburst
7 server ct iburst //同步主機ct
[root@c1 ~]# systemctl enable chronyd
[root@c1 ~]# systemctl restart chronyd
#使用 chronyc sources 命令查詢時間同步資訊
[root@ct ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 203.107.6.88 2 8 377 162 +445us[ +557us] +/- 27ms
設定周期性任務
[root@ct ~]# crontab -e
*/30 * * * * /usr/bin/chronyc sources >> /var/log/chronyc.log //每半小時執行一次時間同步的日志記錄
[root@ct ~]# crontab -l //查看任務計劃
*/30 * * * * /usr/bin/chronyc sources >> /var/log/chronyc.log
安裝基礎的環境依賴包(重新下載一遍,查看是否重復)
yum -y install net-tools bash-completion vim gcc gcc-c++ make pcre pcre-devel expat-devel cmake bzip2
yum -y install centos-release-openstack-train //openstack的train版本倉庫源安裝包 同時安裝 OpenStack 客戶端和 openstack-selinux 安裝包
yum -y install python-openstackclient //openstack客戶端
yum -y install openstack-selinux //openstack核心防護,RHEL和 CentOS 默認啟用 SELinux ,安裝 openstack-selinux 包實作對OpenStack服務的安全策略進行自動管理
yum -y install openstack-utils //openstack管理工具
配置OpenStack系統環境配置(僅在控制節點ct上安裝)
安裝配置MariaDB
[root@ct ~]# yum -y install mariadb mariadb-server python2-PyMySQL
//此包用于openstack的控制端連接mysql所需要的模塊,如果不安裝,則無法連接資料庫;此包只安裝在控制端
[root@ct ~]# yum -y install libibverbs
添加MySQL子組態檔,增加如下內容
[root@ct ~]# vim /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 192.168.100.10 #控制節點局域網地址
default-storage-engine = innodb #默認存盤引擎
innodb_file_per_table = on #每張表獨立表空間檔案
max_connections = 4096 #最大連接數
collation-server = utf8_general_ci #默認字符集
character-set-server = utf8
設定開機自啟動服務
[root@ct my.cnf.d]# systemctl enable mariadb
[root@ct my.cnf.d]# systemctl start mariadb
初始化資料庫,執行MariaDB 安全配置腳本
[root@ct my.cnf.d]# mysql_secure_installation
Enter current password for root (enter for none): #回車
OK, successfully used password, moving on...
Set root password? [Y/n] Y //設定root密碼
Remove anonymous users? [Y/n] Y
... Success!
Disallow root login remotely? [Y/n] N
... skipping.
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
安裝RabbitMQ
所有創建虛擬機的指令,控制端都會發送到rabbitmq,node節點監聽rabbitmq
[root@ct ~]# yum -y install rabbitmq-server
[root@ct ~]# systemctl enable rabbitmq-server.service //配置服務,啟動RabbitMQ服務,并設定其開機啟動
[root@ct ~]# systemctl start rabbitmq-server.service
創建訊息佇列用戶,用于controler和node節點連接rabbitmq的認證
[root@ct ~]# rabbitmqctl add_user openstack RABBIT_PASS
Creating user "openstack"
配置openstack用戶的操作權限(正則,配置讀寫權限)
[root@ct ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/"
#可查看25672和5672 兩個埠(5672是Rabbitmq默認埠,25672是Rabbit的測驗工具CLI的埠)
查看rabbmq插件串列
[root@ct ~]# rabbitmq-plugins list
Configured: E = explicitly enabled; e = implicitly enabled
| Status: * = running on rabbit@ct
|/
[e*] amqp_client 3.6.16
[e*] cowboy 1.0.4
[e*] cowlib 1.0.2
[ ] rabbitmq_amqp1_0 3.6.16
[ ] rabbitmq_auth_backend_ldap 3.6.16
[ ] rabbitmq_auth_mechanism_ssl 3.6.16
[ ] rabbitmq_consistent_hash_exchange 3.6.16
[ ] rabbitmq_event_exchange 3.6.16
[ ] rabbitmq_federation 3.6.16
[ ] rabbitmq_federation_management 3.6.16
[ ] rabbitmq_jms_topic_exchange 3.6.16
[E*] rabbitmq_management 3.6.16
[e*] rabbitmq_management_agent 3.6.16
[ ] rabbitmq_management_visualiser 3.6.16
[ ] rabbitmq_mqtt 3.6.16
[ ] rabbitmq_random_exchange 3.6.16
[ ] rabbitmq_recent_history_exchange 3.6.16
[ ] rabbitmq_sharding 3.6.16
[ ] rabbitmq_shovel 3.6.16
[ ] rabbitmq_shovel_management 3.6.16
[ ] rabbitmq_stomp 3.6.16
[ ] rabbitmq_top 3.6.16
[ ] rabbitmq_tracing 3.6.16
[ ] rabbitmq_trust_store 3.6.16
[e*] rabbitmq_web_dispatch 3.6.16
[ ] rabbitmq_web_mqtt 3.6.16
[ ] rabbitmq_web_mqtt_examples 3.6.16
[ ] rabbitmq_web_stomp 3.6.16
[ ] rabbitmq_web_stomp_examples 3.6.16
[ ] sockjs
開啟rabbitmq的web管理界面(可視化)的插件,埠為15672
[root@ct ~]# rabbitmq-plugins enable rabbitmq_management
檢查埠(25672 5672 15672)是否開啟
[root@ct ~]# ss -anpt | grep 5672
LISTEN 0 128 *:25672 *:* users:(("beam.smp",pid=9371,fd=46))
LISTEN 0 128 *:15672 *:* users:(("beam.smp",pid=9371,fd=56))
TIME-WAIT 0 0 192.168.100.10:42745 192.168.100.10:25672
LISTEN 0 128 :::5672 :::* users:(("beam.smp",pid=9371,fd=55))
訪問20.0.0.14:15672 驗證服務
默認賬號密碼為guest

安裝memcached
作用:安裝memcached是用于存盤session資訊;服務身份驗證機制使用Memcached來快取令牌 在登錄openstack的dashboard時,會產生一些session資訊,這些session資訊會存放到memcached中
session :會話管理,session共享機制,會有一個共享池,存放客戶請求,所有節點服務器都能回應,當某個回應請求的節點掛掉,其他節點會直接回復請求,整個程序客戶端無感知,
安裝Memcached
[root@ct ~]# yum install -y memcached python-memcached
#python-*模塊在OpenStack中起到連接資料庫的作用
修改Memcached組態檔
[root@ct ~]# vim /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1,::1,ct" //添加控制節點主機名
[root@ct ~]# systemctl enable memcached
[root@ct ~]# systemctl start memcached
[root@ct ~]# netstat -nautp | grep 11211
安裝etcd
[root@ct ~]# yum -y install etc
修改組態檔
[root@ct ~]# cd /etc/etcd/
[root@ct etcd]# ls
etcd.conf
[root@ct etcd]# vim etcd.conf
ETCD_DATA_DIR="/var/lib/etcd/default.etcd" #資料目錄位置
ETCD_LISTEN_PEER_URLS="http://192.168.100.10:2380" #監聽其他etcd member的url(2380埠,集群之間通訊,域名為無效值)
ETCD_LISTEN_CLIENT_URLS="http://192.168.100.10:2379" #對外提供服務的地址(2379埠,集群內部的通訊埠)
ETCD_NAME="ct" #集群中節點標識(名稱)
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.100.10:2380" #該節點成員的URL地址,2380埠:用于集群之間通訊
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.100.10:2379
ETCD_INITIAL_CLUSTER="ct=http://192.168.100.10:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01" #集群唯一標識
ETCD_INITIAL_CLUSTER_STATE="new"
#初始集群狀態,new為靜態,若為existing,則表示此ETCD服務將嘗試加入已有的集群
若為DNS,則表示此集群將作為被加入的物件
#開機自啟動、開啟服務,檢測埠
[root@ct ~]# systemctl enable etcd.service
[root@ct ~]# systemctl start etcd.service
[root@ct ~]# netstat -anutp |grep 2379
[root@ct ~]# netstat -anutp |grep 2380
#ETCD_CORS=""
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
#ETCD_WAL_DIR=""
ETCD_LISTEN_PEER_URLS="http://192.168.100.10:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.100.10:2379"
#ETCD_MAX_SNAPSHOTS="5"
#ETCD_MAX_WALS="5"
ETCD_NAME="ct"
#[Member]
#ETCD_CORS=""
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
#ETCD_WAL_DIR=""
ETCD_LISTEN_PEER_URLS="http://192.168.100.10:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.100.10:2379"
#ETCD_MAX_SNAPSHOTS="5"
#ETCD_MAX_WALS="5"
ETCD_NAME="ct"
#ETCD_SNAPSHOT_COUNT="100000"
#ETCD_HEARTBEAT_INTERVAL="100"
#ETCD_ELECTION_TIMEOUT="1000"
#ETCD_QUOTA_BACKEND_BYTES="0"
#ETCD_MAX_REQUEST_BYTES="1572864"
#ETCD_GRPC_KEEPALIVE_MIN_TIME="5s"
#ETCD_GRPC_KEEPALIVE_INTERVAL="2h0m0s"
#ETCD_GRPC_KEEPALIVE_TIMEOUT="20s"
#
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.100.10:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.100.10:2379"
#ETCD_DISCOVERY=""
#ETCD_DISCOVERY_FALLBACK="proxy"
#ETCD_DISCOVERY_PROXY=""
#ETCD_DISCOVERY_SRV=""
ETCD_INITIAL_CLUSTER="ct=http://192.168.100.10:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"
#ETCD_STRICT_RECONFIG_CHECK="true"
#ETCD_ENABLE_V2="true"
Keystone 組件的搭建
OpenStack組件安裝的順序
Keystone(apache)
glance
nova
neutron
部署openstack組件時,需先行安裝認證服務(keystone),而認證服務是使用Apache運行的,安裝完成后才可以創建、管理賬號,然后安裝鏡像服務(glance)、計算服務(nova)、網路服務(neutron)
其中計算服務和網路服務分為管理端和客戶端,所以需要在openstack的管理端安裝計算服務和網路服務的管理端,在創建虛擬機的node節點上安裝計算服務和網路服務的客戶端,最后安裝dashboard服務,openstack各種組件的API都是通過apache運行的
openstack的管理端負責創建虛擬機程序的調度:
通過openstack管理端創建虛擬機的相關資料最終都會記錄到mysql(mariadb)中;node節點沒有權限往資料庫中寫資料,只有控制端有權限,并且node節點與控制端通訊是通過rabbitmq間接通訊,node節點會監聽rabbitmq,控制端也會監聽rabbitmq,控制端把創建虛擬機的指令發送到rabbitmq,由監聽rabbitmq指定佇列的node節點接收訊息并創建虛擬機
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/236556.html
標籤:其他
