openstack雲計算管理平臺

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


image.png

系統初始化部署:

一、關閉防火牆和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其餘組件的訪問地址和安全策略管理。

image.png

在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

image.png



2、glance(鏡像服務):使用戶可以發現、註冊並檢索虛擬機鏡像(.img文件),提供了一個REST API接口,使用戶能夠查詢虛擬機鏡像元數據和檢索一個實際的鏡像文件,默認虛擬機鏡像存儲路徑爲/var/lib/glance/images/

image.pngimage.pngimage.png

在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 

image.png




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

image.png

# nova image-list

image.png




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

image.png



在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

image.png




安裝並配置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

image.png



建立第一個網絡:

在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

image.png二、在任何一臺外部主機上ping路由器獲取到的外部地址





5、horizon(儀表盤組件):

image.png

安裝儀表板組件

# 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登陸

相關文章
相關標籤/搜索