=================================OpenStack安裝部署筆記==================================
注:這里僅是自己學習和理解記錄使用的,未做驗證,大家不要以這個為准,非常抱歉!
0.環境准備
主機名 核數 內存 eth0(NAT模式) eth1(主機模式) eth2(主機模式)
controller 1u 2G 192.168.1.10
compute 4u 4G 192.168.1.11 172.26.1.11
neutron 4u 2G 192.168.1.12 172.26.1.12 10.0.0.12
block 2u 2G 192.168.1.13
系統:centos7.6-1806
1.初始化
關閉防火牆:
systemctl stop firewalld
systemctl disable firewalld
關閉網絡管理:
systemctl stop NetworkManager
systemctl disable NetworkManager
關閉selinux:
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
getenforce
更改yum源:
ll |grep '.repo$' |awk '{printf "mv %s %s.bak\n",$NF,$NF}' |bash #批量備份yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache
yum clean all
yum update
重啟:
reboot
設置主機名:
hostnamectl set-hostname controller
hostnamectl set-hostname compute
hostnamectl set-hostname nuetron
hostnamectl set-hostname block
設置hosts解析:
cat>>/etc/hosts<<EOF
controller 192.168.1.10
compute 192.168.1.11
nuetron 192.168.1.12
block 192.168.1.13
EOF
2.安裝OpenStack預備包
1.安裝yum-plugin-priorities包,防止高優先級軟件被低優先級軟件覆蓋
yum -y install yum-plugin-priorities
2.安裝epel擴展源
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
yum -y install wget
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
3.安裝OpenStack源
#yum -y install http://rdo.fedorapeople.org/openstack-juno/rdo-release-juno.rpm
yum list |grep 'openstack'
yum -y install centos-release-openstack-queens.noarch
4.更新操作系統
yum upgrade
5.安裝openstack-selinux自動管理selinux
yum -y install openstack-selinux
----------------------------------------------------------------------------
=============================keystone的部署安裝=============================
***部署在controller節點***
3.controller節點安裝數據庫
1.安裝mariadb軟件包
yum -y install mariadb-server mariadb MySQL-python
2.編輯/etc/yum.cnf軟件,設置綁定ip,默認數據庫引擎及默認字符集為UTF-8
[mysql]
bind-address = 192.168.1.10
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
3.啟動數據庫並設置為開機自啟動
systemctl start mariadb
systemctl enable mariadb
4.初始化數據庫腳本
mysql_secure_installation
4.安裝messaing server服務
1.功能:協調操作和狀態信息服務
2.常用的消息代理軟件
rabbitMQ、Qpid、ZeroMQ
3.在controller節點安裝rabbitMQ
a.安裝rabbitMQ軟件包
yum -y install rabbitmq-server
b.啟動服務並設置開機自啟
systemctl start rabbitmq-server
systemctl enable rabbitmq-server
c.rabbitmq默認用戶名和密碼是guest,可以通過下列命令修改
rabbitmqctl change_password guest new_password
5.安裝時間同步服務器
1.安裝
yum -y install ntp
2.配置時間服務器
vim /etc/ntp.conf
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
注釋掉server...
server 127.127.1.0
fudge 127.127.1.0 stratum 10
3.開啟時間同步服務器並設置自啟
systemctl start ntpd
systemctl enable ntpd
6.配置安裝keystone節點
1.配置先決條件
#創建認證服務數據庫
#登錄mysql數據庫
mysql -u root -p
#創建keystone數據庫
create database keystone;
#創建keystone數據庫用戶,使其可以對keystone數據庫有完全控制權
grant all privileges on keystone.* to 'keystone'@'localhost' identified by 'KEYSTONE_PASS'
#生成一個隨機值作為管理令牌在初始配置
openssl rand-hex 10;
2.安裝和配置認證組件
#安裝軟件包
yum install -y openstack-keystone python-keystoneclient
#編輯/etc/keystone/keyston.conf
a.修改[DEFAULT]小節,定義初始管理令牌
[DEFAULT]
...
admin_token = 剛生成的隨機值
b.修改[database]小節,配置數據庫訪問
[database]
...
connection = mysql://keystone:KEYSTONE_DBPASS@controller(或填ip地址)/keystons
c.修改[token]小節,配置UUID提供者和SQL驅動
[token]
...
provider = keystone.token.providers.uuid.Provider
drive = keystone.token.persistence.backends.sql.Token
d.(可選)開啟詳細日志,協助故障排除
[DEFAULT]
....
verbose = True
3.常見通用證書的秘鑰,並限制相關文件的訪問權限
keystone-manage pki_setup --keystone-user keystone --keystone-group keystone
chown -R keystone:keystone /var/log/keystone
chown -R keystone:keystone /etc/keystone/ssl
chmod -R o-rwx /etc/kystone/ssl
4.初始化keystone數據庫
su -s /bin/sh -c "keystone-manage db_sync" keystone
5.啟動identity服務並設置開機啟動
systemctl start openstack-keystone.service
systemctl enable openstack-keystone.service
6.默認情況下,服務器會無限存儲到期的令牌,在資源有限的情況下會嚴重影響服務器的性能,建議用計划任務,每小時刪除過期的令牌。
(crontab -l -u keystone 2>&1 |grep -q 'token_flush') ||\
echo '@hourly /usr/bin/keystone-manage token_flush>/var/log/keystone/keystone-tokenflush.log 2>&1'\
>>/var/spool/cron/keystone
7.創建tenants(租戶),user(用戶)和roles(角色)
#配置先決條件
a.配置管理員令牌
export OS_SERVICE_TOKEN=剛生成的字符串
b.配置端點
export OS_SERVICE_ENDPOINT=http://controller:35357/v2.0
#創建用於管理的租戶、用戶和角色
a.創建admin租戶
keystone tenant-create --name admin --description "Admin Tenant"
b.創建admin用戶
keystone user-create --name admin --pass ADMIN_PASS --email EMAIL_ADDRESS
c.創建admin角色
keystone role-create --name admin
d.添加admin租戶和用戶到admin角色
keystone user-role-add --tenant admin --user admin --role _member_
8.創建一個用於演示的demo租戶
a.創建demo租戶
keystone tenant-create --name demo --description "Demo Tenant"
b.創建demo用戶
keystone user-create --name demo --pass DEMO_PASS --email EMAIL_ADDRESS
c.添加demo租戶和用戶到_member_角色
keystone user-role-add --tenant demo --user demo --role _member_
9.OpenStack服務也需要一個租戶、用戶和角色與其他服務進行交互。因此我們創建一個service的租戶。任何一個OpenStack服務都要和它關聯
keystone tenant-create --name service --description "Service Tenant"
10.創建服務實體和API端點
#在OpenStack環境中,identity服務管理一個服務目錄,並使用這個目錄在OpenStack環境中定位其他服務。
#為identity服務創建一個服務實體
keystone service-create --name keystone --type identity --description "OpenStack identity"
#OpenStack環境中,identity服務管理目錄以及服務相關API端點。服務使用這個目錄來溝通其他服務
#OpenStack為每個服務提供了三個API端點:admin(管理),internal(內部),public(公共)
#為OpenStack服務創建API端點
keystone endpoint-create\
--service-id $(keystone service-list |awk '/identity/{print $2}')\
--publicurl http://controller:5000/v2.0\
--internalurl http://controller:5000/v2.0\
--adminurl http://controller:35357/v2.0\
--region regionOne
11.確認操作
a.刪除OS_SERVICE_TOKEN和OS_SERVICE_ENDPOINT臨時變量
unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT
b.使用admin租戶和用戶請求認證令牌
keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS --os-auth-url http://controller:35357/v2.0 token-get
c.以admin租戶和用戶身份查看租戶列表
keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS --os-auth-uri http://controller:35357/v2.0 tenant-list
d.以admin租戶和用戶的身份查看用戶列表
keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS --os-auth-url http://controller:35357/v2.0 user-list
e.以admin租戶和用戶的身份查看角色列表
keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS --os-auth-url http://controller:35357/v2.0 role-list
f.以demo租戶和用戶身份請求認證令牌
keystone --os-tenant-name demo --os-username demo --os-password DEMO_PASS --os-auth-url http://controller:35357/v2.0 token-get
g.以demo租戶和用戶的身份查看用戶列表
keystone --os-tenant-name demo --os-username demo --os-password DEMO_PASS --os-auth-url http://controller/v2.0 user-list
12.為OpenStack客戶端創建環境變量腳本
#創建admin環境腳本
cat >admin-openrc.sh<<EOF
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PSS
export OS_AUTH_URL=http://controller:35357/v2.0
EOF
#創建demo租戶用戶環境腳本
cat>demo-openrc.sh<<EOF
export OS_TENANT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=DEMO_PASS
export OS_AUTH_URL=http://controller:5000/v2.0
EOF
#加載客戶端環境腳本
source admin-openrc.sh
-----------------------------------------------------------------------------
===========================glance的安裝部署==================================
***部署在controller節點***
1.創建數據庫
a.登錄數據庫
mysql -uroot -p
b.創建glance數據庫
create database glance;
c.創建數據庫用戶glance,並授權對glance數據庫的管理權限
grant all privileges on glance.* to 'glance@localhost' identified by 'GLANCE_DBPASS';
grant all privileges on glance.* to 'glance@%' identified by 'GLANCE_DBPASS';
d.退出數據庫連接
2.啟動admin環境腳本
source admin-openrc.sh
3.創建認證服務憑證
a.創建glance用戶
keystone user-create --name glance --pass GLANCE_PASS
b.將glance用戶連接到service租戶和admin角色
keystone user-role-add --user glance --tenant service --role admin
c.創建glance服務
keystone service-create --name glance --type image --description "OpenStack Image Service"
4.為OpenStack鏡像服務創建認證服務端點
keystone endpoint-create\
--service-id $(keystone service-list |awk '/image/{print $2}')\
--publicurl http://controller:9292\
--internalurl http://controller:9292\
--adminurl http://controller:9292\
--region regionOne
5.安裝軟件包
yum -y install openstack-glance python-glanceclient
6.編輯/etc/glance/glance-api.conf文件
a.修改[database]小節,配置數據庫連接
[database]
...
connection = mysql://glance:GLANCE_DBPASS@controller/glance
b.修改[keystone_authtoken]和[paste_deploy]小節,配置認證服務訪問
[keystone_authtoken]
...
auth_url = http://controller:5000/v2.0
identity_url = http://controller:35357
admin_tenant_name = service
admin_user = glance
admin_password = GLANCE_PASS
[paste_deploy]
...
flavor = keystone
c.(可選)在[DEFAULT]小節中配置詳細日志輸出,方便排錯
[DEFAULT]
...
verbose = True
7.編輯/etc/glance/glance-registry.conf文件
a.在[database]小節中配置數據庫連接
[database]
...
connection = mysql://glance:GLANCE_DBPASS@controller/glance
b.在[keystone_authtoken]和[paste_deploy]小節中配置認證服務訪問
[keystone_authtoken]
...
auth_url = http://controller:5000/v2.0
identity_url = http://controller:35357
admin_tenant_name = service
admin_user = glance
admin_password = GLANCE_PASS
[paste_deploy]
...
flavor = keystone
c.(可選)在[DEFAULT]小節中配置詳細日志輸出,方便排錯
[DEFAULT]
...
verbose = True
d.在[glance_store]小節配置本地文件系統存儲和鏡像文件的存放路徑
[glance_store]
...
default_stone=file
filesystem_stone_datadir=/var/lib/glance/images/
8.初始化鏡像服務的數據庫
su -s /bin/sh -c "glance-manage db_sync" glance
9.啟動服務並設置開機自起
systemctl start openstack-glance-api.service openstack-glance-registry.service
systemctl enable openstack-glance-api.service openstack-glance-registry.service
10.驗證安裝
a.創建一個臨時目錄
mkdir /tmp/images
cd /tmp/images
b.下載CirrOS鏡像文件到臨時目錄
wget http://cdn.download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img (真實環境)
wget ftp://ftp服務器ip/cirros-0.3.3-x86_64-disk.img (實驗環境)
c.運行admin環境腳本,以便執行管理命令
source admin-openrc.sh
d.上傳鏡像文件到鏡像服務器
glance image-create --name "cirros-0.3.3-x86_64" --file cirros-0.3.3-x86_64-disk.img\
--disk-format qcow2 --container-format bare --is-public True --progress
--progress :顯示上傳進度
e.確認鏡像文件上傳並驗證屬性
glance image-list
--------------------------------------------------------------------------
===========================nova的安裝部署=================================
***部署在controller節點***
1.安裝時間同步服務
yum -y install ntpdate
2.controller節點配置數據庫
a.使用數據庫管理員root登錄數據庫
mysql -uroot -p
b.創建nova數據庫
create database nova;
c.創建數據庫用戶nova,並授權nova用戶對nova數據庫的完全控制權限
grant all privileges on nova.* to 'nova'@'localhost' identified by 'NOVA_DBPASS';
grant all privileges on nova.* to 'nova'@'%' identified by 'NOVA_DBPASS';
d.退出數據庫連接
3.執行admin環境腳本
source admin-openrc.sh
4.在認證服務中創建計算服務的認證信息
a.創建nova用戶
keystone user-create --name nova --pass NOVA_PASS
b.鏈接nova用戶到service租戶和admin角色
keystone user-role-add --user nova --tenant service --role admin
c.創建nova服務
keystone service-create --name nova --type compute --description "OpenStack Compute"
5.創建計算服務端點
keystone endpoint-create \
--service-id $(keystone service-list | awk '/compute/{print $2}')\
--publicurl http://controller:8744/v2/%\(tenant_id\)s\
--internalurl http://controller:8744/v2/%\(tenant_id\)s\
--adminurl http://controller:8744/v2/%\(tenant_id\)s\
--region regionOne
6.安裝軟件包
yum install openstack-nova-api openstack-nova-cert openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler python-novaclient
7.編輯/etc/nova/nova.conf文件
a.編輯[database]小節,配置數據庫訪問
[database]
...
connection=mysql://nova:NOVA_DBPASS@controller/nova
b.編輯[DEFAULT]小節,配置RabbitMQ消息隊列訪問
[DEFAULT]
...
rpc_backend=rabbit
rabbit_host=controller
rabbit_password=RABBIT_PASS
c.編輯[DEFAULT]和[keystone_authtoken]小節,配置認證服務
[DEFAULT]
...
auth_strategy=keystone
[keystone_authtoken]
...
aurh_url=http://controller:5000/v2.0
identity_url=http://controller:35357
admin_tenant_name=service
admin_user=nova
admin_password=NOVA_PASS
d.編輯[DEFAULT]小節,配置my_ip選項為controller節點的管理接口ip
[DEFAULT]
...
my_ip=192.168.1.10
e.編輯[DEFAULT]小節,配置VNCdialing服務的使用controller節點的管理接口ip
[DEFAULT]
...
vncserver_listen=192.168.1.10
vncserver_proxyclient_address=192.168.1.10
f.編輯[glance]小節,配置鏡像服務器的位置
[glance]
...
host=controller
g.(可選)在[DEFAULT]小節中配置詳細日志輸出,方便排錯
[DEFAULT]
...
verbose=True
8.初始化計算數據庫
su -s /bin/sh -c "nova-manage db sync" nova
9.啟動服務並設置開機自啟
systemctl start openstack-nova-api.service openstack-nova-cert.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
systemctl enable openstack-nova-api.service openstack-nova-cert.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
-----------------------------------------------------------------------
***部署在compute節點***
10.安裝並配置計算虛擬化組件
1.安裝軟件包
yum -y install openstack-nova-compute sysfsutils
2.編輯/etc/nova/nova.conf文件
a.編輯[DEFAULT]小節,配置RabbitMQ消息隊列訪問
[DEFAULT]
...
rpc_backend=rabbit
rabbit_host=controller
rabbit_password=RABBIT_PASS
b.編輯[DEFAULT]和[keystone_authtoken]小節,配置認證服務訪問
[DEFAULT]
...
auth_strategy=keystone
[keystone_authtoken]
...
auth_url=http://controller:5000/v2.0
identity_url=http://controller:35357
admin_tenant_name=service
admin_user=nova
admin_password=NOVA_PASS
c.編輯[DEFAULT]小節,配置my_ip配置項
[DEFAULT]
...
my_ip=MANAGEMENT_INTERFACE_IP_ADDRESS(192.168.1.11)
d.編輯[DEFAULT]小節,開啟並配置遠程控制台訪問
[DEFAULT]
...
vnc_enabled=True
vncserver_listen=0.0.0.0
vncserver_proxyclient_address=MANAGEMENT_INTERFACE_IP_ADDRESS(192.168.1.11)
novncproxy_base_url=http://controller:6080/vnc_auto.html #生成不同租戶的連接地址
e.編輯[glance]小節,配置鏡像服務器位置
[glance]
...
host=controller
f.(可選)在[DEFAULT]小節中配置詳細日志輸出,方便排錯
[DEFAULT]
...
verbose=True
3.完成安裝
1.確認你的節點是否支持虛擬化
egrep -c '(vmx|svm)' /proc/cpuinfo
如果返回值>=1,則說明你的計算節點硬件支持虛擬化,無需額外配置
如果返回值=0,則說明你的計算節點不支持虛擬化,你必須配置libvirt由使用KVM改為QEMU
在/etc/nova/nova.conf文件中編輯[libvirt]小節
[libvirt]
...
virt_type=qemu
2.啟動計算服務以及依賴服務,並設置開機自啟
systemctl start libvirtd.service openstack-nova-compute.service
systemctl enable libvirtd.service openstack-nova-compute.service
4.在controller節點驗證安裝
1.啟動admin環境腳本
source admin-openrc.sh
2.列出服務組件確認每一個進程啟動成功
nova service-list
3.列出鏡像服務中的鏡像列表,確認連接認證服務器和鏡像服務器成功
nova image-list
---------------------------------------------------------------------------------
==============================neutron的安裝部署==================================
***controller節點部署***
1.創建數據庫
a.使用root用戶連接數據庫
mysql -uroot -p
b.創建neutron數據庫
create database neutron;
c.創建數據庫用戶neutron,並授予neutron用戶對neutron數據庫完全控制住權限
grant all privileges on neutron.* to 'neutron'@'localhost' identified by 'NEUTRON_DBPASS';
grant all privileges on neutron.* to 'neutron'@'%' identified by 'NEUTRON_DBPASS';
d.退出數據庫
2.執行admin環境變量腳本
source admin-openrc.sh
3.在認證服務中創建網絡服務的認證信息
a.創建neutron用戶
keystone user-create --name neutron --pass NEUTRON_PASS
b.連接neutron用戶到service租戶和admin角色
keystone user-role-add --user neutron --tenant service --role admin
c.創建neutron服務
keystone service-create --name neutron --type network --description "OpenStack Networking"
d.創建neutron服務端點
keystone endpoint-create\
--service-id $(keystone service-list | awk '/network/{print $2}')\
--publicurl http://controller:9696\
--adminurl http://controller:9696\
--internalurl http://controller:9696\
--region regionOne
4.安裝網絡服務組件
yum install -y openstack-neutron openstack-neutron-ml2 python-neutronclient which
5.配置網絡服務組件,編輯/etc/neutron/neutron.conf文件
a.編輯[database]小節,配置數據庫訪問
[database]
...
connection=mysql://neutron:NEUTRON_DBPASS@controller/neutron
b.編輯[DEFAULT]小節,配置RabbitMQ消息隊列訪問
[DEFAULT]
...
rpc_backend=rabbit
rabbit_host=controller
rabbit_password=RABBIT_PASS
c.編輯[DEFAULT]和[keystone_authtoken]小節,配置認證服務訪問
[DEFAULT]
...
auth_strategy=keystone
[keystone_authtoken]
...
auth_url=http://controller:5000/v2.0
identity_url=http://controller:35357
admin_tenant_name=service
admin_user=neutron
admin_password=NEUTRON_PASS
d.編輯[DEFAULT]小節,啟動Modular Layer2(ML2)插件,路由服務和重疊ip地址功能
[DEFAULT]
...
core_plugin=ml2
service_plugins=router
e.編輯[DEFAULT]小節,配置當網絡拓撲結構發生變化時通知計算服務
[DEFAULT]
...
notify_nova_on_port_status_changes=True
notify_nova_on_port_data_changes=True
nova_url=http://controller:8774/v2.0
nova_admin_auth_url=http://controller:35357/v2.0
nova_region_name=regionOne
nova_admin_username=nova
nova_admin_tenant_id=SERVICE_TENANT_ID
nova_admin_password=NOVA_PASS
注:可通過keystone tenant-get service,獲取service租戶ID
f.(可選)在[DEFAULT]小節中配置詳細日志輸出,方便排錯
[DEFAULT]
...
verbose=True
6.配置Modular Layer2(ML2)plug-in
編輯/etc/neutron/plugins/ml2/ml2_conf.ini文件
a.編輯[ml2]小節,啟動flat和generic routing encapsulation(GRE)網絡類型驅動,配置GRE租戶網絡和OVS驅動機制
[ml2]
...
type_drivers=flat,gre
tenant_network_types=gre
mechanism_drivers=openvswitch
b.編輯[ml2_type_gre]小節,配置隧道標識范圍
[ml2_type_gre]
...
tunnel_id_ranges=1:1000
c.編輯[securitygroup]小節,啟用安全組,啟用ipset並配置OVS防火牆驅動
[securitygroup]
...
enable_security_group=True
enable_ipset=True
firewall_driver=neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
7.配置計算服務使用neutron
默認情況下,計算服務使用傳統網絡,我們需要重新配置
編輯/etc/nova/nova.conf文件
a.編輯[ DEFAULT]小節,配置API接口和驅動程序
[DEFAULT]
...
network_api_class=nova.network.neutronv2.api.API
security_group_api=neutron
linuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDrive
firewall_drive=nova.virt.firewall.NoopFirewallDriver
b.編輯[neutron]小節,配置訪問參數
[neutron]
...
url=http://controller:9696
auth_strategy=keystone
admin_auth_url=http://controller:35357/v2.0
admin_tenant_name=service
admin_username=neutron
admin_password=NEUTRON_DBPASS
8.完成配置
a.為ML2插件配置文件創建連接文件
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
b.初始化數據庫
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade juno" neutron
c.重新啟動計算服務
systemctl restart openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service
d.啟動網絡服務並配置開機自動啟動
systemctl start neutron-server.service
systemctl enable neutron-server.service
9.驗證
a.執行admin環境變量腳本
source admin-openrc.sh
b.列出加載的擴展模塊,確認成功啟動neutron-server進程
neutron ext-list
---------------------------------------------------------------------------------
***neutron節點安裝***
10.安裝ntp時間服務器同步時間
yum -y install ntpdate
11. 編輯/etc/sysctl.conf文件
net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
12.使更改生效
sysctl -p
13.安裝網絡組件
yum -y install openstack-neutron-ml2 openstack-neutron-openvswitch
14.配置網絡通用組件
網絡通用組件配置包含認證機制,消息隊列及插件
編輯/etc/neutron/neutron.conf文件
a.編輯[database]小節,注釋任何connection選項。因為network節點不能直接連接數據庫
b.編輯[DEFAULT]小節,配置RabbitMQ消息隊列訪問
[DEFAULT]
...
rpc_backend=rabbit
rabbit_host=controller
rabbit_password=RABBIT_PASS
c.編輯[DEFAULT]和[keystone_authtoken]小節,配置認證服務訪問
[DEFAULT]
...
auth_strategy=keystone
[keystone_authtoken]
...
auth_url=http://controller:5000/v2.0
identity_url=http://controller:35357
admin_tenant_name=service
admin_user=neutron
admin_password=NEUTRON_DBPASS
d.編輯[DEFAULT]小節,啟用Modular Layer2(ML2)插件,路由服務和重疊ip地址功能
[DEFAULT]
...
core_plugin=ml2
service_plugins=router
allow_overlapping_ips=True
e.(可選)在[DEFAULT]小節中配置詳細日志輸出,方便排錯
[DEFAULT]
...
verbose=True
15.配置Modular Layer 2(ML2)plug-in
ML2插件使用Open vSwitch (OVS)機制虛擬機實例提供網絡框架
編輯/etc/neutron/plugins/ml2/ml2_conf.ini文件
a.編輯[ml2]小節,啟用flat和generic routing encapsulation(GRE)網絡類型驅動,配置GRE租戶網絡和OVS驅動機制
[ml2]
...
type_drivers=flat,gre
tenant_network_types=gre
mechanism_drivers=openvswitch
b.編輯[ml2_type_flat]小節,配置外部網絡
[ml2_type_flat]
...
flat_networks=external
c.編輯[ml2_type_gre]小節,配置隧道標識范圍
[ml2_type_gre]
...
tunnel_id_ranges=1:1000
d.編輯[securitygroup]小節,啟用安全組,啟用ipset並配置OVS防火牆驅動
[securitygroup]
...
enable_security_group=True
enable_ipset=True
firewall_driver=neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
e.編輯[ovs]小節,配置Open vSwitch(OVS)代理
[ovs]
...
local_ip=INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS(192.168.1.12)
tunnel_type=gre
enable_tunneling=True
bridge_mapping=external:br-ex
16.配置Layer-3(L3)agent
編輯/etc/neutron/l3_agent.ini文件並完成下列配置
a.編輯[DEFAULT]小節,配置驅動,啟用網絡命名空間,配置外部網絡橋接
[DEFAULT]
...
interface_driver=neutron.agent.linux.interface.OVSInterfaceDriver
use_namespaces=True
external_network_bridge=bt-ex
b.(可選)在[DEFAULT]小節中配置詳細日志輸出,方便排錯
[DEFAULT]
...
verbose=True
17.配置DHCP agent
編輯/etc/neutron/dhcp_agent.ini文件
a.編輯[DEFAULT]小節,配置驅動和啟動命名空間
[DEFAULT]
...
interface_driver=neutron.agent.linux.interface.OVSInterfaceDriver
dhcp_driver=neutron.agent.linux.dhcp.Dnsmasq
use_namespaces=True
b.(可選)在[DEFAULT]小節中配置詳細日志輸出,方便排錯
[DEFAULT]
...
verbose=True
18.(可選,在VMware虛擬機中可能是必要的!)配置DHCP選項,將MUT改為1454bytes,以改善網絡性能
a.編輯/etc/neutron/dhcp_agent.ini文件
編輯[DEFAULT]小節,啟用dnsmasq配置
[DEFAULT]
...
dnsmasq_config_file=/etc/neutron/dnsmasq-neutron.conf
b.創建並編輯/etc/neutron/dnsmasq-neutron.conf文件
啟用DHCP MTU選項(26)並配置值為1454bytes
dhcp-option-force=26,1454
user=neutron
group=neutron
c.終止任何已經存在的dnsmasq運行
pkill dnsmasq
19.配置metadata agent
1.編輯/etc/neutron/metadata_agent.ini文件並完成下列配置
a.編輯[DEFAULT]小節,配置訪問參數
[DEFAULT]
...
auth_url=http://controller:5000/v2.0
auth_region=regionOne
admin_tenant_name=service
admin_user=neutron
admin_password=NEUTRON_PASS
b.編輯[DEFAULT]小節,配置元數據主機
[DEFAULT]
...
nova_metadata_ip=controller
c.編輯[DEFAULT]小節,配置元數據代理共享機密暗號
[DEFAULT]
...
metadata_proxy_shared_secret=METADATA_SECRET
d.(可選)在[DEFAULT]小節配置詳細日志輸出,方便排錯
[DEFAULT]
...
verbose=True
20.在controller節點,編輯/etc/nova/nova.conf文件並完成下列配置
編輯[neutron]小節,啟用元數據代理並配置機密暗號
[neutron]
...
service_metadata_proxy=True
metadata_proxy_shared_secret=METADATA_SECRET
21.在controller節點,重新啟動compute API服務
systemctl restart openstack-nova-api.service
22.配置Open vSwitch(OVS)服務
a.啟動OVS服務並配置開機自動啟動
systemctl start openvswitch.service
systemctl enable openvswitch.service
b.添加外部網橋
ovs-vsctl add-br br-ex
c.添加一個端口到外部網橋,用於連接外部物理網絡
ovs-vsctl add-port br-ex INTERFACE_NAME
注:將INTERFACE_NAME換成實際連接外部網卡接口名,如eth2或eno50332208
23.完成安裝
1.創建網絡服務初始化腳本的符號連接
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
cp /usr/lib/systemd/system/neutron-openvswitch-agnet.service /usr/lib/systemd/system/neutron-openvswitch-agnet.service.orig
sed -i 's,plugins/openvswitch/ovs_neutron_plugin.ini,plugin.ini,g' /usr/lib/systemd/system/neutron-openvswitch-agnet.service
2.啟動網絡服務並設置開機自啟
systemctl start neutron-openvswitch-agent.service neutron-l3-agent.service neutron-dhcp-agent.service neutron-metadata_agent.service neutron-ovs-cleanup.service
systemctl enable neutron-openvswitch-agent.service neutron-l3-agent.service neutron-dhcp-agent.service neutron-metadata_agent.service neutron-ovs-cleanup.service
24.驗證(在controller節點執行下列命令)
1.執行admin環境變量腳本
source admin-openrc.sh
2.列出neutron代理,確認啟動neutron agents成功
neutron agent-list
----------------------------------------------------------------------------------
***computea節點上安裝部署***
1.配置/etc/sysctl.conf文件
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
2.使/etc/sysctl.conf文件中的更改生效
sysctl -p
3.安裝網絡組件
yum -y install openstack-neutron-ml2 openstack-neutron-openvswitch
4.配置網絡通用組件
a.編輯[database]小節,注釋左右connection配置項,因為計算節點不能直接連接數據庫
b.編輯[DEFAULT]小節,配置RabbitMQ消息隊列訪問
[DEFAULT]
...
rpc_backend=rabbit
rabbit_host=controller
rabbit_password=RABBIT_PASS
c.編輯[DEFAULT]和[keystone_authtoken]小節,配置認證服務訪問
[DEFAULT]
...
auth_strategy=keystone
[keystone_authtoken]
...
auth_url=http://controller:5000/v2.0
identity_url=http://controller:35357
admin_tenant_name=service
admin_user=neutron
admin_password=NEUTRON_PASS
d.編輯[DEFAULT]小節,啟用Modular Layer2(ML2)插件,路由服務和重疊ip地址功能
[DEFAULT]
...
core_plugin=ml2
service_plugins=router
allow_overlapping_ips=True
e.(可選)在[DEFAULT]小節中配置詳細日志輸出,方便管理排錯
[DEFAULT]
...
verbose=True
5.配置Modular Layer 2 (ML2)plug-in
編輯/etc/neutron/plugins/ml2/ml2_conf.ini文件並完成下列操作
a.編輯[ml2]小節,啟用flat和generic routing encapsulation(GRE)網絡類型驅動,GRE租戶網絡和OVS機制驅動
[ml2]
...
type_drivers=flat,gre
tenant_network_types=gre
mechanism_drivers=openvswitch
b.編輯[ml2_type_gre]小節,配置隧道標識符(id)范圍
[ml2_type_gre]
...
tunnel_id_ranges=1:1000
c.編輯[securitygroup]小節,啟用安全組,IPset並配置OVS iptables防火牆驅動
[securitygroup]
...
enable_security_group=True
enable_ipset=True
firewall_drive=neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
d.編輯[ovs]小節,配置Open vSwitch (OVS)agent
[ovs]
...
local_ip=INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS
tunnel_type=gre
enable_tunneling=True
6.配置Open vSwich (OVS)service
啟動OVS服務並設置開機自動啟動
systemctl enable openvswitch.service
systemctl start openvswitch.service
7.配置計算服務使用網絡
編輯/etc/nova/nova.conf文件並完成下列操作
a.編輯[DEFAULT]小節,配置API接口和驅動
[DEFAULT]
...
network_api_class=nova.network.neutronv2.api.API
security_group_api=neutron
linuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDrive
firewall_drive=nova.virt.firewall.NoopFirewallDriver
b.編輯[neutron]小節,配置訪問參數
[neutron]
...
url=http://controller:9696
auth_strategy=keystone
admin_auth_url=http://controller:35357/v2.0
admin_tenant_name=service
admin_username-neutron
admin_password=NEUTRON_PASS
8.完成安裝
1.創建網絡服務初始化腳本的符號連接
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
cp /usr/lib/systemd/system/neutron-openvswitch-agent.service /usr/lib/systemd/system/neutron-openvswitch-agent.service.orig
sed -i 's,plugins/openvswitch/ovs_neutron_plugin.ini,plugin.ini,g' /usr/lib/systemd/system/neutron-openvswitch-agent.service
2.重啟計算服務
systemctl restart openstack-nova-compute.service
3.啟動OVS代理服務並設置開機自動啟動
systemctl start neutron-openvswitch-agent.service
systemctl enable neutron-openvswitch-agent.service
9.驗證(在controller節點執行下列命令)
1.執行admin環境變量腳本
source admin-openrc.sh
2.列出neutron代理,確認啟動neutron agents成功
neutron agent-list
-----------------------------------------------------------------------------
創建一個外部網絡:
1.執行admin環境變量腳本
source admin-openrc.sh
2.創建網絡
neutron net-create ext-net --shared --router:external True --provider:physical_network external --provider:network_type flat
創建一個外部網絡的子網:
創建子網
neutron subnet-create ext-net --name ext-subnet\
--allocation-pool start=FLOATING_IP_START,end=FLOATING_IP_END\
--disable-dhcp --gateway EXTERNAL_NETWORK_GATEWAY EXTERNAL_NETWORK_CIDR
FLOATING_IP_START=起始ip
FLOATING_IP_END=結束ip
EXTERNAL_NETWORK_GATEWAY=外部網絡網關
EXTERNAL_NETWORK_CIDR=外部網絡網段
例如:外網網段為10.0.0.0/24,浮動地址范圍為:10.0.0.100~10.0.0.200,網關為:10.0.0.1
neutron subnet-create ext-net --name ext-subnet\
--allocation-pool start=10.0.0.100,end=10.0.0.200\
--disable-dhcp --gateway 10.0.0.1 10.0.0.0/24
創建一個租戶網絡:
1.執行demo環境變量腳本
source demo-openrc.sh
2.創建租戶網絡
neutron net-create demo-net
創建一個租戶網絡的子網:
創建子網
neutron subnet-create demo-net --name demo-subnet \
--gateway TENANT_NETWORK_GATEWAY TENANT_NETWORK_CIDR
TENANT_NETWORK_GATEWAY=租戶網的網關
TENANT_NETWORK_CIDR=租戶網的網段
例如:租戶網的網段為192.168.2.0/24,網關為192.168.2.1(網關通常默認為1)
neutron subnet-create demo-net --name demo-subnet\
--gateway 192.168.2.1 192.168.2.0/24
在租戶網絡創建一個路由器,用來連接外部網和租戶網
1.創建路由器
neutron router-create demo-router
2.附加路由器到demo租戶的子網
neutron router-interface-add demo-router demo-subnet
3.通過設置網關,使路由器附加到外部網
neutron router-gateway-set demo-router ext-net
確認連接
1.查看路由器獲取到的ip
neutron router-list
------------------------------------------------------------------------
============================cinder組件的安裝部署=========================
***controller節點部署***
1.創建數據庫
a.以數據庫管理員root身份連接數據庫
mysql -uroot -p
b.創建cinder數據庫
create database cinder;
c.創建數據庫用戶cinder,並授權cinder用戶對cinder數據庫的完全控制權限
grant all priviles on cinder.* to 'cinder'@'localhost' identified by 'CINDER_DBPASS';
grant all priviles on cinder.* to 'cinder'@'%' identified by 'CINDER_DBPASS';
d.退出數據庫連接
2.執行admin環境變量腳本
source admin-openrc.sh
3.在認證服務中創建網絡服務的認證信息
a.創建cinder用戶
keystone user-create --name cinder --pass CINDER_PASS
b.鏈接cinder用戶到service租戶和admin角色
keystone user-role-add --user cinder --tenant service --role admin
c.創建cinder服務
keystone service-create --name cinder --type volume --description "OpenStack Blocak Storage"
keystone service-create --anme cinderv2 --type volumev2 --description "OpenStack Blocak Storage"
d.創建塊存儲服務端點
keystone endpoint-create\
--service-id $(keystone service-list |awk '/volume/{print $2}')\
--publicurl http://controller:8776/v1/%\(tenant_id\)s\
--internalurl http://controller:8776/v1/%\(tenant_id\)s\
--adminurl http://controller:8776/v1/%\(tenant_id\)s\
--region regionOne
keystone endpoint-create\
--service-id $(keystone service-list |awk '/volumev2/{print $2}')\
--publicurl http://controller:8776/v2/%\(tenant_id\)s\
--internalurl http://controller:8776/v2/%\(tenant_id\)s\
--adminurl http://controller:8776/v2/%\(tenant_id\)s\
--region regionOne
4.安裝並配置塊存儲控制組件
1.安裝軟件包
yum -y install openstack-cinder python-cinderclient python-oslo-db
2.編輯/etc/cinder/cinder.conf文件
a.編輯[database]小節,配置數據庫連接
[database]
...
connection=mysql://cinder:CINDER_DBPASS@controller/cinder
b.編輯[DEFAULT]小節,配置RabbitMQ消息隊列訪問
[DEFAULT]
...
rpc_backend=rabbit
rabbit_host=controller
rabbit_password=RABBIT_PASS
c.編輯[DEFAULT]和[keystone_authtoken]小節,配置認證服務訪問
[DEFAULT]
...
auth_strategy=keystone
[keystone_authtoken]
...
auth_uri=http://controller:5000/v2.0
identity_url=http://controller:35357
admin_tenant_name=service
admin_user=cinder
admin_password=CINDER_PASS
d.編輯[DEFAULT]小節,配置my_ip選項為controller節點的控制接口ip
[DEFAULT]
...
my_ip=192.168.1.10
e.(可選)在[DEFAULT]小節中配置詳細的日志輸出,方便排錯
[DEFAULT]
...
verbose=True
3.初始化存儲服務數據庫
su -s /bin/sh -c "cinder-manage db sync" cinder
4.完成安裝,啟動塊存儲服務並設置開機自動啟動
systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
------------------------------------------------------------------------------------
***block節點安裝部署***
1.添加一個新的硬盤(如:sdb),並將全部空間分成一個區
2.配置網卡信息
IP address:192.168.1.13
Network mask:255.255.255.0
Default gateway:192.168.1.254
3.設置主機名為block,並添加對應的hosts解析。設置NTP服務
4.安裝LVM軟件包
yum -y install lvm2
5.啟動LVM服務並設置開機自動啟動
systemctl start lvm2-lvmetad.service
systemctl enable lvm2-lvmetad.service
6.創建物理卷/dev/sdb1(名字不要改)
pvcreate /dev/sdb1
7.創建卷組cinder-volumes(名字不要改)
vgcreate cinder-volumes /dev/sdb1
8.編輯/etc/lvm/lvm.conf文件,使系統只掃描啟用LVM的磁盤。防止識別其他非LVM磁盤對塊存儲服務造成的影響
編輯devices小節,添加過濾器允許/dev/sdb磁盤,拒絕其他設備
devices{
...
filter=["a/sdb/","r/.*/"]
警告:如果你的系統磁盤使用了LVM,則必須添加系統盤到過濾器中
filter=["a/sdb","a/sdb/","r/.*/"]
同樣,如果compute節點的系統盤也使用了LVM,則也需要修改/etc/lvm/lvm.conf.並添加過濾器
filter=["a/sdb/","r/.*/"]
}
9.安裝並配置塊存儲控制組件
1.安裝軟件包
yum -y install openstack-cinder targetcli python-oslo-db MySQL-python
2.編輯/etc/cinder/cinder.conf文件
a.編輯[database]小節,配置數據庫訪問
[database]
...
connection=mysql://cinder:CINDER_DBPASS@controller/cinder
b.編輯[DEFAULT]小節,配置RabbitMQ消息代理訪問
[DEFAULT]
...
rpc_backend=rabbit
rabbit_host=controller
rabbit_password=RABBIT_PASS
c.編輯[DEFAULT]和[keystone_authtoken]小節,配置認證服務訪問
[DEFAULT]
...
auth_strategy=keystone
[keystone_authtoken]
...
aurh_url=http://controller:5000/v2.0
identity_url=http://controller:35357
admin_tenant_name=service
admin_user=cinder
admin_password=CINDER_PASS
d.編輯[DEFAULT]小節,配置my_ip配置項
[DEFAULT]
...
my_ip=MANAGEMENT_INTERFACE_IP_ADDRESS
e.編輯[DEFAULT]小節,配置鏡像服務器位置
[DEFAULT]
...
glance_host=controller
f.編輯[DEFAULT]小節,配置塊存儲服務使用lioadm ISCSI服務
[DEFAULT]
...
iscsi_helper=lioadm
g.(可選)在[DEFAULT]小節中配置詳細日志輸出,方便排錯
[DEFAULT]
verbose=True
3.完成安裝
啟動塊存儲volume服務和ISCSI服務,並設置開機自啟
systemctl start openstack-cinder-volume.service target.service
systemctl enable openstack-cinder-volume.service target.service
4.驗證(在controller幾點完成以下操作)
1.執行admin環境變量腳本
source admin-openrc.sh
2.列出服務組件確認每個進程啟動成功
cinder service-list
3.執行demo用戶環境變量腳本
source demo-openrc.sh
4.創建1GB卷
cinder create --display-name demo-volume1 1
5.確認卷已創建並可用
cinder list
------------------------------------------------------------------------------------
====================================================================================
************************************實例創建****************************************
1.創建秘鑰對
大多數雲鏡像使用公鑰認證,這有別與傳統的用戶名/密碼認證。在啟動一個實例之前,你必須使用ssh-keygen命令生成一個秘鑰對,並將秘鑰對添到你的OpenStack環境
1.執行demo環境變量腳本
source demo-openrc.sh
2.生成秘鑰對
ssh-keygen
3.添加公鑰到OpenStack環境中
nova keypair-add --pub-key ~/.ssh/id_rsa.pub demo-key
4.驗證公鑰是否添加成功
nova keypair-list
2.啟動一個實例
要啟動一個實例,你必須最少指定flavor(雲主機類型),image name(鏡像名),network(網絡),security group(安全組),key(秘鑰)和instance name(實例名)。
1.flavor用來指定一個虛擬的獨立分配的資源。包括cpu、內存和存儲
查看可用的flavor
nova flavor-list
2.列出可用的鏡像
nova image-list
3.列出可用的網絡
neutron net-list
4.列出可用的安全組
nova secgroup-list
5.啟動實例
nova boot --flavor m1.tiny --image cirros-0.3.3-x86_64 --nic net-id=DEMO_NET_ID --security-group default --key-name demo-key demo-instance1
6.查看實例
nova list
7.通過虛擬控制台訪問實例
查看實例訪問url
nova get-vnc-console demo-instance1 novnc
3.遠程訪問實例
1.添加規則名為default的安全組
a.允許ICMP協議(ping)
nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
b.允許ssh協議
nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
2.在ext-net外部網絡創建一個浮動ip地址
neutron floatingip-create ext-net
3.分配浮動ip地址到實例
nova floating-ip-associate demo-instance1 創建的浮動ip地址
4.檢查浮動ip地址狀態
nova list
5.從任何一個可以和ext-net網絡通信的主機測試連通性
ping -c 4 浮動IP地址
6.從任何一個可以和ext-net網絡通信的主機上通過ssh訪問實例
ssh 用戶@浮動IP地址
或將私鑰文件復制到外部客戶端,通過秘鑰對驗證登錄
ssh -i id_rsa 用戶@浮動IP地址
4.實例添加額外的雲硬盤
1.執行demo環境變量腳本
source demo-openrc.sh
2.列出卷
nova volume-list
3.附加demo-volume1卷到demo-instance1實例
nova volume-attach demo-instance1 雲盤UUID
4.列出卷
nova volume-list
5.實例查看磁盤
lsblk
6.分區磁盤
fdisk
7.格式化磁盤
mkfs -t ext4 /dev/vdb1
8.掛載
mount -t ext4 /dev/vdb1 /data
9.查看掛載
lsblk/df -h
5.圖形界面操作
登錄dashboard進程實例的相關操作
