cloud:
css
IaaS(Infrastructure as a Service),基礎設施即服務html
openstack、cloudstack
node
PaaS(Platform-as-a-Service),平臺即服務python
docker
mysql
SaaS(Software-as-a-Service),軟件即服務linux
雲計算之openstackweb
雲的願景:使用計算資源使用網絡資源像使用自來水同樣按需自由有償。sql
雲計算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網絡訪問,進入可配置的計算資源共享池(資源包括網絡,服務器,存儲,應用軟件,服務),這些資源可以被快速提供,只需投入不多的管理工做,或與服務提供商進行不多的交互。docker
用途分類:數據庫
私有云:側重點:兼容性、安全性、定製化
公有云:側重點:容量、彈性、成本
混合雲
供給角度分類:
IAAS基礎設施即服務 廠家表明:騰訊雲 阿里雲 AWS
PAAS平臺即服務 廠家表明:新浪雲
SAAS軟件即服務 廠家表明:微軟雲-office365
雲平臺管理選擇標準:
一、API接口的普遍性
二、使用何種的開源協議進行編寫
三、平臺的成熟度
openstack版本選擇:Juno
組件說明:
nova:計算服務,compute
glance:鏡像服務,image service
swift:對象存儲,object storage
cinder:塊存儲,block storage
neutron:網絡服務,networking
horizon:儀表板,dashboard
keystone:認證服務,identity service
heat:編排,orchestration
ceilometer:監控,telemetry
trove:數據庫服務,database service
sahara:數據處理,data processing
安裝結構說明:
操做系統:centos 7
openstack版本:juno
關閉防火牆和selinux
資源配置狀況:
controller node:1cpu、1GB、1網卡(管理網絡)、100GB
compute node:儘可能多cpu、儘可能多內存、2網卡(管理網絡、實例網絡)、100GB
network node:2cpu、2GB、3網卡(管理網絡、實例網絡、外部網絡)、20GB系統盤
block node:2cpu、1.5GB、1網卡(管理網絡)、20GB系統盤、100GB
系統初始化部署:
一、關閉防火牆和selinux、NetworkManager
# systemctl stop firewalld NetworkManager
# systemctl disable firewalld NetworkManager
# vim /etc/selinux/config
SELINUX=disabled
二、設置主機名、dns解析、時間同步
測試環境規劃以下:
controller.nice.com 192.168.222.5
network.nice.com 192.168.222.6
compute1.nice.com 192.168.222.10
block1.nice.com 192.168.222.20
# hostnamectl set-hostname XXXX
# vim /etc/hosts
192.168.222.5 controller.nice.com
192.168.222.6 network.nice.com
192.168.222.10 compute1.nice.com
192.168.222.20 block1.nice.com
# yum install chrony -y
# systemctl start chronyd
# systemctl enable chronyd
三、安裝yum-plugin-priorities、epel源、openstack源
# yum install yum-plugin-priorities epel-release -y
# vim /etc/yum.repos.d/openstack.repo
[openstack-juno]
name=openstack-juno
baseurl=https://repos.fedorapeople.org/repos/openstack/EOL/openstack-juno/epel-7/
#metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch&infra=$infra&content=$contentdir
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
四、更新系統並重啓
# yum update -y && reboot
各組件安裝:
1、keystone(認證服務):是openstack identity service的項目名稱,是一個負責身份管理與受權的組件;其主要功能:實現用戶的身份認證,基於角色的權限管理,及openstack其餘組件的訪問地址和安全策略管理。
在controller節點配置:
一、數據庫:mariadb軟件包 注意:生產環境中,應該獨立作mysql集羣
# yum install mariadb mariadb-server MySQL-python -y
# vim /etc/my.cnf 添加
[mysqld]
bind-address=192.168.222.5
default-storage=innodb
innodb_file_per_table
collation-server=utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server=utf8
# systemctl start mariadb
# systemctl enable mariadb
# mysql_secure_installation
二、消息隊列:rabbitmq 注意:生產環境中,應該獨立作rabbitmq集羣
# yum install rabbitmq-server -y
# systemctl start rabbitmq-server
# systemctl enable rabbitmq-server
# rabbitmqctl change_password guest guest123 修改默認的guest用戶密碼爲guest123
三、時間同步服務器
# vim /etc/chrony.conf
allow 192.168.222.0/24
# systemctl restart chronyd
四、keystone數據庫
# mysql -uroot -p
MariaDB [(none)]> CREATE DATABASE keystone;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone123';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone123';
# openssl rand -hex 10 建立隨機值做爲管理員的token
275d75ff789937d7003d
# yum install openstack-keystone python-keystoneclient -y
# vim /etc/keystone/keystone.conf 修改以下參數
[DEFAULT] 定義管理員令牌
admin_token=275d75ff789937d7003d
[database] 配置數據庫訪問
connection=mysql://keystone:keystone123@controller.nice.com/keystone
[token] 配置UUID提供者和SQL驅動
provider=keystone.token.providers.uuid.Provider
driver=keystone.token.persistence.backends.sql.Token
verbose=True 開啓詳細日誌,協助故障排查
# keystone-manage pki_setup --keystone-user keystone --keystone-group keystone 設置用戶和組都爲keystone
# chown -R keystone:keystone /var/log/keystone
# chown -R keystone:keystone /etc/keystone/ssl
# chmod -R o-rwx /etc/keystone/ssl
# su -s /bin/sh -c "keystone-manage db_sync" keystone 初始化keystone數據庫
# mysql -uroot -p -e "show tables from keystone;" 驗證keystone數據庫
# systemctl start openstack-keystone
# systemctl enable openstack-keystone
# (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 每小時定時刪除過時的token
# crontab -l -ukeystone 驗證計劃任務
@hourly /usr/bin/keystone-manage token_flush > /var/log/keystone/keystone-tokenflush.log 2>&1
五、建立租戶、用戶和角色
# export OS_SERVICE_TOKEN=275d75ff789937d7003d
# export OS_SERVICE_ENDPOINT=http://controller.nice.com:35357/v2.0
a、建立admin租戶
# keystone tenant-create --name admin --description "Admin Tenant"
b、建立admin用戶
# keystone user-create --name admin --pass admin123
c、建立admin角色
# keystone role-create --name admin
d、連接admin租戶和用戶到admin角色
# keystone user-role-add --tenant admin --user admin --role admin
e、建立用於dashboard訪問的「_member_」角色
# keystone role-create --name _member_
f、連接admin租戶和用戶到_member_角色
# keystone user-role-add --tenant admin --user admin --role _member_
g、建立service租戶
# keystone tenant-create --name service --description "Service Tenant"
建立一個用於演示的demo租戶和用戶
# keystone tenant-create --name demo --description "Demo Tenant"
# keystone user-create --name demo --pass demo123
# keystone user-role-add --tenant demo --user demo --role _member_
建立服務實體和API端點
一、爲identity服務建立一個服務實體
# keystone service-create --name keystone --type identity --description "OpenStack Identity"
二、爲identity服務建立三個API端點:admin(管理)、internal(內部)、public(公共);
# keystone endpoint-create --service-id $(keystone service-list | awk '/ identity / {print $2}') --publicurl http://controller.nice.com:5000/v2.0 --internalurl http://controller.nice.com:5000/v2.0 --adminurl http://controller.nice.com:35357/v2.0 --region regionOne
確認操做
一、刪除臨時變量 OS_SERVICE_TOKEN、OS_SERVICE_ENDPOINT
# unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT
二、使用admin租戶和用戶請求認證令牌
# keystone --os-tenant-name admin --os-username admin --os-password admin123 --os-auth-url http://controller.nice.com:35357/v2.0 token-get
三、以admin租戶和用戶的身份查看租戶列表
# keystone --os-tenant-name admin --os-username admin --os-password admin123 --os-auth-url http://controller.nice.com:35357/v2.0 tenant-list
四、以admin租戶和用戶的身份查看用戶列表
# keystone --os-tenant-name admin --os-username admin --os-password admin123 --os-auth-url http://controller.nice.com:35357/v2.0 user-list
五、以admin租戶和用戶的身份查看角色列表
# keystone --os-tenant-name admin --os-username admin --os-password admin123 --os-auth-url http://controller.nice.com:35357/v2.0 role-list
六、以demo租戶和用戶的身份請求認證令牌
# keystone --os-tenant-name demo --os-username demo --os-password demo123 --os-auth-url http://controller.nice.com:35357/v2.0 token-get
七、以demo租戶和用戶的身份查看用戶列表
# keystone --os-tenant-name demo --os-username demo --os-password demo123 --os-auth-url http://controller.nice.com:35357/v2.0 user-list
建立openstack客戶端環境腳本(避免重複輸入租戶帳號密碼等信息)
一、admin用戶的環境腳本
# vim admin-openrc.sh
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin123
export OS_AUTH_URL=http://controller.nice.com:35357/v2.0
# source admin-openrc.sh
二、demo用戶的環境腳本
# vim demo-openrc.sh
export OS_TENANT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=demo123
export OS_AUTH_URL=http://controller.nice.com:5000/v2.0
# source admin-openrc.sh
在controller節點驗證
# keystone tenant-list
2、glance(鏡像服務):使用戶可以發現、註冊並檢索虛擬機鏡像(.img文件),提供了一個REST API接口,使用戶能夠查詢虛擬機鏡像元數據和檢索一個實際的鏡像文件,默認虛擬機鏡像存儲路徑爲/var/lib/glance/images/
在controller節點配置:
一、glance數據庫
# mysql -uroot -p
MariaDB [(none)]> CREATE DATABASE glance;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'glance123';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance123';
二、啓動管理員admin腳本
# source admin-openrc.sh
三、建立認證用戶憑證
a、建立glance用戶
# keystone user-create --name glance --pass glance123
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"
四、爲openstack鏡像服務建立認證服務端點
keystone endpoint-create --service-id $(keystone service-list | awk '/ image / {print $2}') --publicurl http://controller.nice.com:9292 --internalurl http://controller.nice.com:9292 --adminurl http://controller.nice.com:9292 --region regionOne
安裝並配置鏡像服務組件
# yum install openstack-glance python-glance -y
# vim /etc/glance/glance-api.conf
[DEFAULT]
verbose=True
[database]
connection=mysql://glance:glance123@controller.nice.com/glance
[keystone_authtoken]
auth_host=controller.nice.com
auth_port=35357
auth_protocol=http
admin_tenant_name=service
admin_user=glance
admin_password=glance123
auth_uri=http://controller.nice.com:5000
[paste_deploy]
flavor=keystone
# vim /etc/glance/glance-registry.conf
[DEFAULT]
verbose=True
[database]
connection=mysql://glance:glance123@controller.nice.com/glance
[keystone_authtoken]
auth_host=controller.nice.com
auth_port=35357
auth_protocol=http
admin_tenant_name=service
admin_user=glance
admin_password=glance123
auth_uri=http://controller.nice.com:5000
[paste_deploy]
flavor=keystone
[glance_store]
default_store=file
file_store_datadir=/var/lib/glance/images/
# su -s /bin/sh -c "glance-manage db_sync" glance 初始化鏡像服務的數據庫
# systemctl start openstack-glance-api openstack-glance-registry
# systemctl enable openstack-glance-api openstack-glance-registry
驗證安裝(使用cirros驗證鏡像服務是否安裝成功)
# mkdir -pv /tmp/images
# cd /tmp/images
# wget http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
# source /root/admin-openrc.sh
# glance image-create --name "cirros-0.3.3-x86_64" --file /tmp/images/cirros-0.3.3-x86_64-disk.img --disk-format qcow2 --container-format bare --is-public True --progress
# rm -rf /tmp/images
在controller節點驗證
# glance image-list
3、nova(雲計算服務):提供虛擬化管理服務。
在controller節點配置:
配置先決條件
一、nova數據庫
# mysql -uroot -p
MariaDB [(none)]> CREATE DATABASE nova;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'nova123';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova123';
二、執行admin環境腳本
# source admin-openrc.sh
三、在認證服務中建立計算服務的認證信息
a、建立nova用戶
# keystone user-create --name nova --pass nova123
b、連接nova到service租戶和admin角色
# keystone user-role-add --tenant service --role admin --user nova
c、建立nova服務
# keystone service-create --name nova --type compute --description "OpenStack Compute"
d、建立計算機服務端點
# keystone endpoint-create --service-id $(keystone service-list | awk '/ compute / {print $2}') --publicurl http://controller.nice.com:8774/v2/%\(tenant_id\)s --internalurl http://controller.nice.com:8774/v2/%\(tenant_id\)s --adminurl http://controller.nice.com:8774/v2/%\(tenant_id\)s --region regionOne
安裝和配置計算控制組件
# yum install openstack-nova-api openstack-nova-cert openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler python-novaclient -y
# vim /etc/nova/nova.conf
[DEFAULT] 配置rabbit消息隊列訪問
rabbit_host=controller.nice.com
rabbit_password=guest123
rpc_backend=rabbit
auth_strategy=keystone
my_ip=192.168.222.5 controller節點的管理接口IP
vncserver_listen=192.168.222.5
vncserver_proxyclient_address=192.168.222.5
verbose=True
[keystone_authtoken] 配置認證服務
auth_uri=http://controller.nice.com:5000/v2.0
identity_uri=http://controller.nice.com:35357
admin_user=nova
admin_password=nova123
admin_tenant_name=service
[glance]
host=controller.nice.com
[database]
connection=mysql://nova:nova123@controller.nice.com/nova 配置數據庫訪問
# su -s /bin/sh -c "nova-manage db sync" nova 初始化nova數據庫
# systemctl start openstack-nova-api openstack-nova-cert openstack-nova-conductor openstack-nova-consoleauth openstack-nova-novncproxy openstack-nova-scheduler
# systemctl enable openstack-nova-api openstack-nova-cert openstack-nova-conductor openstack-nova-consoleauth openstack-nova-novncproxy openstack-nova-scheduler
在compute節點配置:
同controller,進行系統初始化部署(包含主機名、時間同步、yum repo等等)
安裝配置nova
# yum install openstack-nova-compute sysfsutils -y
# vim /etc/nova/nova.conf
[DEFAULT] 配置rabbit消息隊列訪問
rabbit_host=controller.nice.com
rabbit_password=guest123
rpc_backend=rabbit
auth_strategy=keystone
my_ip=192.168.222.10 compute節點的管理接口IP
vnc_enabled=true
vncserver_listen=0.0.0.0
vncserver_proxyclient_address=192.168.222.10
novncproxy_base_url=http://controller.nice.com:6080/vnc_auto.html
verbose=True
[keystone_authtoken] 配置認證服務
auth_uri=http://controller.nice.com:5000/v2.0
identity_uri=http://controller.nice.com:35357
admin_user=nova
admin_password=nova123
admin_tenant_name=service
[glance]
host=controller.nice.com
# egrep -c '(svm|vmx)' /proc/cpuinfo 確認是否支持硬件虛擬化,返回值爲1,表示支持;如設置不支持硬件虛擬化,則需設置nova.conf中的virt_type=qemu
# systemctl enable libvirtd openstack-nova-compute
# systemctl start libvirtd
# systemctl start openstack-nova-compute
在controller節點驗證
# source admin-openrc.sh
# nova service-list
# nova image-list
4、neutron(網絡服務)
在controller節點配置:
一、neutron數據庫
# mysql -uroot -p
MariaDB [(none)]> CREATE DATABASE neutron;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'neutron123';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'neutron123';
二、執行admin環境變量腳本
# source admin-openrc.sh
三、在認證服務中建立網絡服務的認證信息
a、建立neutron用戶
# keystone user-create --name neutron --pass neutron123
b、連接neutron用戶到service租戶和admin角色
# keystone user-role-add --tenant service --role admin --user neutron
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.nice.com:9696 --internalurl http://controller.nice.com:9696 --adminurl http://controller.nice.com:9696 --region regionOne
安裝、配置網絡服務組件
問題:python-neutron與python2-eventlet衝突:
Error: python-neutron conflicts with python2-eventlet-0.18.4-1.el7.noarch
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
解決辦法:
一、卸載原來的python2-eventlet包
# rpm -e --nodeps python2-eventlet
二、安裝juno源中的python-eventlet包(版本0.15.2-1.el7)
# yum --disablerepo=epel install python-eventlet -y
# yum install openstack-neutron openstack-neutron-ml2 python-neutronclient which -y
配置網絡服務組件
# vim /etc/neutron/neutron.conf
a、編輯[database]小節,配置數據庫訪問
[database]
connection = mysql://neutron:neutron123@controller.nice.com/neutron
b、編輯[DEFAULT]小節,配置rabbitmq消息隊列訪問
[DEFAULT]
rabbit_host=controller.nice.com
rabbit_password=guest123
rpc_backend=rabbit
c、編輯[DEFAULT]和[keystone_authtoken]小節,配置認證服務訪問
[DEFAULT]
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://controller.nice.com:5000/v2.0
identity_uri = http://controller.nice.com:35357
admin_tenant_name = service
admin_user = neutron
admin_password = neutron123
d、編輯[DEFAULT]小節,啓用modular layer2(ML2)插件,路由服務和重疊IP地址功能
[DEFAULT]
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True
e、編輯[DEFAULT]小節,配置當前網絡拓撲結構發生變化時通知計算服務
[DEFAULT]
notify_nova_on_port_status_changes = True
notify_nova_on_port_data_changes = True
nova_url = http://controller.nice.com:8774/v2
nova_admin_auth_url = http://controller.nice.com:35357/v2.0
nova_region_name = regionOne
nova_admin_username = neutron
nova_admin_tenant_id = 1b7db191c0294649b94bae666a7459fd 此處tenant_id可經過# keystone tenant-get service獲取
nova_admin_password = neutron123
f、開啓日誌詳細輸出
[DEFAULT]
verbose = True
配置modular layer2(ML2)plug-in
# vim /etc/neutron/plugins/ml2/ml2_conf.ini
a、編輯[ml2]小節,啓用flat和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
配置計算服務使用neutron,默認使用傳統網絡,因此須要從新配置
# vim /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.LinuxOVSInterfaceDriver
firewall_driver=nova.virt.firewall.NoopFirewallDriver
b、編輯[neutron]小節,配置訪問參數
[neutron]
url=http://controller.nice.com:9696
auth_strategy=keystone
admin_auth_url=http://controller.nice.com:35357/v2.0
admin_tenant_name=service
admin_username=neutron
admin_password=neutron123
完成配置
一、爲ml2插件配置文件建立連接文件
# ln -sv /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
二、初始化數據庫
# 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
三、從新啓動計算服務
# systemctl restart openstack-nova-api openstack-nova-scheduler openstack-nova-conductor
四、啓動網絡服務並配置開機自動啓動
# systemctl enable neutron-server
# systemctl start neutron-server
在controller節點驗證
一、執行admin環境變量腳本
# source admin-openrc.sh
二、列出加載的擴展模塊,確認成功啓動neutron-server進程
# neutron ext-list
在network節點操做:安裝並配置network節點
配置先覺條件
一、開啓內核參數
# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
二、使更改生效
# sysctl -p
安裝配置網絡組件
問題:python-neutron與python2-eventlet衝突:
Error: python-neutron conflicts with python2-eventlet-0.18.4-1.el7.noarch
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
解決辦法:
一、卸載原來的python2-eventlet包
# rpm -e --nodeps python2-eventlet
二、安裝juno源中的python-eventlet包(版本0.15.2-1.el7)
# yum --disablerepo=epel install python-eventlet -y
# yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-openvswitch -y
# vim /etc/neutron/neutron.conf
a、編輯[database]小節,註釋任何connection選項,由於network節點不能直接鏈接數據庫。
b、編輯[DEFAULT]小節,配置rabbitmq消息隊列訪問
[DEFAULT]
rabbit_host=controller.nice.com
rabbit_password=guest123
rpc_backend=rabbit
c、編輯[DEFAULT]和[keystone_authtoken]小節,配置認證服務訪問
[DEFAULT]
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://controller.nice.com:5000/v2.0
identity_uri = http://controller.nice.com:35357
admin_tenant_name = service
admin_user = neutron
admin_password = neutron123
d、編輯[DEFAULT]小節,啓用modular layer2(ML2)插件,路由服務和重疊IP地址功能
[DEFAULT]
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True
e、開啓日誌詳細輸出
[DEFAULT]
verbose = True
配置modular layer2(ML2)plug-in
# vim /etc/neutron/plugins/ml2/ml2_conf.ini
a、編輯[ml2]小節,啓用flat和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 = 172.16.0.6 network節點的內部實例網絡ip
tunnel_type = gre
enable_tunneling = True
bridge_mappings = external:br-ex 規範外部網橋名爲br-ex
配置layer-3(L3)agent
# vim /etc/neutron/l3_agent.ini
a、在[DEFAULT]小節,開啓debug日誌輸出
[DEFAULT]
debug = True
b、編輯[DEFAULT]小節,配置驅動,啓用網絡命名空間,配置外部網絡橋接
[DEFAULT]
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
use_namespaces = True
external_network_bridge = br-ex
配置dhcp agent
一、必選
# vim /etc/neutron/dhcp_agent.ini
a、在[DEFAULT]小節,開啓debug日誌輸出
[DEFAULT]
debug = True
b、編輯[DEFAULT]小節,配置驅動和啓用命名空間
[DEFAULT]
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
use_namespaces = True
二、(可選,在vmware虛擬機中必選)配置dhcp選項,將mtu改成1454bytes,以改善網絡性能。
a、編輯/etc/neutron/dhcp_agent.ini,在[DEFAULT],啓用dnsmasq配置
[DEFAULT]
dnsmasq_config_file = /etc/neutron/dnsmasq-neutron.conf
b、建立並編輯/etc/neutron/dnsmasq-neutron.conf文件
# vim /etc/neutron/dnsmasq-neutron.conf
dhcp-option-force=26,1454
user=neutron
group=neutron
c、終止任何已經存在的dnsmasq進程
# pkill dnsmasq
配置metadata agent
一、# vim /etc/neutron/metadata_agent.ini
a、編輯[DEFAULT]小節,配置訪問參數
[DEFAULT]
auth_url = http://controller.nice.com:5000/v2.0
auth_region = RegionOne
admin_tenant_name = service
admin_user = neutron
admin_password = neutron123
b、編輯[DEFAULT]小節,配置元數據主機
[DEFAULT]
nova_metadata_ip = controller.nice.com
c、編輯[DEFAULT]小節,配置元數據代理共享機密暗號
[DEFAULT]
metadata_proxy_shared_secret = openstack-juno 此處暗號自行設置
d、開啓debug日誌,(可選)
[DEFAULT]
debug = True
二、在controller節點,啓用元數據代理並配置機密暗號
# vim /etc/nova/nova.conf
[neutron]
service_metadata_proxy=True
metadata_proxy_shared_secret=openstack-juno
三、在controller節點,從新啓動compute api服務
# systemctl restart openstack-nova-api
配置open vswitch(ovs)服務
一、啓用ovs服務並設置開機自動啓動
# systemctl start openvswitch
# systemctl enable openvswitch
二、添加配置所需的外部網橋br-ex
# ovs-vsctl add-br br-ex
三、添加一個端口到外部網橋,用於鏈接外部物理網絡。
# ovs-vsctl add-port br-ex ens38 此處ens38需換成實際鏈接外部網卡接口名
完成安裝
一、建立網絡服務初始化腳本的符號鏈接
# ln -sv /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
二、啓動網絡服務並設置開機自動啓動
# systemctl enable neutron-openvswitch-agent neutron-l3-agent neutron-dhcp-agent neutron-metadata-agent neutron-ovs-cleanup
# systemctl start neutron-openvswitch-agent neutron-l3-agent neutron-dhcp-agent neutron-metadata-agent
驗證(在controller節點)
# source admin-openrc.sh
# neutron agent-list
安裝並配置compute1節點,若有多個compute節點都需執行
配置先覺條件
一、開啓內核參數
# vim /etc/sysctl.conf
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
二、使更改生效
# sysctl -p
安裝配置網絡組件
問題:python-neutron與python2-eventlet衝突:
Error: python-neutron conflicts with python2-eventlet-0.18.4-1.el7.noarch
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
解決辦法:
一、卸載原來的python2-eventlet包
# rpm -e --nodeps python2-eventlet
二、安裝juno源中的python-eventlet包(版本0.15.2-1.el7)
# yum --disablerepo=epel install python-eventlet -y
# yum install openstack-neutron-ml2 openstack-neutron-openvswitch -y
# vim /etc/neutron/neutron.conf
a、編輯[database]小節,註釋任何connection選項,由於network節點不能直接鏈接數據庫。
b、編輯[DEFAULT]小節,配置rabbitmq消息隊列訪問
[DEFAULT]
rabbit_host=controller.nice.com
rabbit_password=guest123
rpc_backend=rabbit
c、編輯[DEFAULT]和[keystone_authtoken]小節,配置認證服務訪問
[DEFAULT]
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://controller.nice.com:5000/v2.0
identity_uri = http://controller.nice.com:35357
admin_tenant_name = service
admin_user = neutron
admin_password = neutron123
d、編輯[DEFAULT]小節,啓用modular layer2(ML2)插件,路由服務和重疊IP地址功能
[DEFAULT]
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True
e、開啓日誌詳細輸出
[DEFAULT]
verbose = True
配置modular layer2(ML2)plug-in
# vim /etc/neutron/plugins/ml2/ml2_conf.ini
a、編輯[ml2]小節,啓用flat和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
d、編輯[ovs],配置open vswitch(ovs)代理
[ovs]
local_ip = 172.16.0.10 compute1節點的內部實例網絡ip
tunnel_type = gre
enable_tunneling = True
配置open vswitch(ovs)服務
啓用ovs服務並設置開機自動啓動
# systemctl start openvswitch
# systemctl enable openvswitch
配置計算服務使用網絡
# vim /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.LinuxOVSInterfaceDriver
firewall_driver=nova.virt.firewall.NoopFirewallDriver
b、編輯[neutron]小節,配置訪問參數
[neutron]
url=http://controller.nice.com:9696
auth_strategy=keystone
admin_auth_url=http://controller.nice.com:35357/v2.0
admin_tenant_name=service
admin_username=neutron
admin_password=neutron123
完成安裝
一、建立網絡服務初始化腳本的符號鏈接
# ln -sv /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
二、重啓計算服務
# systemctl restart openstack-nova-compute
三、啓動ovs代理服務並設置開機自動啓動
# systemctl daemon-reload
# systemctl enable neutron-openvswitch-agent.service
# systemctl start neutron-openvswitch-agent.service
驗證(在controller節點)
# source admin-openrc.sh
# neutron agent-list
建立第一個網絡:
在controller節點:配置外部網絡
建立一個外部網絡
# source admin-openrc.sh
# 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=100.100.100.100,end=100.100.100.240 --disable-dhcp --gateway 100.100.100.10 100.100.100.0/24
在controller節點:配置租戶網絡
建立一個租戶網絡
# source demo-openrc.sh
# neutron net-create demo-net
建立一個租戶網絡子網
# neutron subnet-create demo-net --name demo-subnet --gateway 192.168.80.1 192.168.80.0/24
在租戶網絡建立一個路由器,用來鏈接外部網絡和租戶網
一、建立路由器
# neutron router-create demo-router
二、附加路由器到demo租戶的子網
# neutron router-interface-add demo-router demo-subnet
三、經過設置網關,使路由器附加到外部網絡
# neutron router-gateway-set demo-router ext-net
確認鏈接
一、查看路由器獲取到的IP
# neutron router-list
二、在任何一臺外部主機上ping路由器獲取到的外部地址
5、horizon(儀表盤組件):
安裝儀表板組件
# yum install openstack-dashboard httpd mod_wsgi memcached python-memcached -y
配置儀表板
# vim /etc/openstack-dashboard/local_settings
一、配置dashboard使用controller節點上的openstack服務
OPENSTACK_HOST = "controller.nice.com"
二、設置容許來自全部網絡的主機訪問dashboard
ALLOWED_HOSTS = ['*']
三、配置memcached會話存儲服務(將原有CACHES區域註釋)
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCachea',
'LOCATION': '127.0.0.1:11211',
}
}
四、配置時區(可選)
TIME_ZONE = "Asia/Shanghai"
完成安裝
一、在rhel或centos上,配置selinux去容許web服務器訪問openstack服務(若是沒關selinux)
# setsebool -P httpd_can_network_connect on
二、修改相關文件歸屬,使dashboard css能夠被加載
# chown -R apache:apache /usr/share/openstack-dashboard/static
三、啓動web和memcached,並設置開機自啓動
# systemctl enable httpd memcached
# systemctl start httpd memcached
驗證
一、訪問dashboard,訪問地址http://controller.nice.com/dashboard
二、使用admin或demo登陸