OpenStack Mitaka HA高可用搭建

OpenStack Mitaka HA高可用搭建mini試看版
version 1.0
環境虛擬機列表:
10.1.1.120 controller1 controller1.test.com
10.1.1.121 controller2 controller2.test.com
10.1.1.122 controller3 controller3.test.com
10.1.1.133 compute1 compute1.test.com
10.1.1.134 glance-backend backend.test.com
10.1.1.135 cinder1 cinder1.test.com
9.110.187.128 demo.openstack.com
網絡配置:
public : 9.110.187.0/24
admin : 10.1.1.0/24
private:10.2.2.0/24
mapping network port:eno67109408
一、 搭建Mariadb Galera Cluster

  1. Mariadb Galera Cluster集羣介紹
    Mariadb Galera Cluster是MySQL高可用性和可擴展性的解決方案
    官網:http://galeracluster.com/products/
    MariaDB Galera Cluster 是一套在mysql innodb存儲引擎上面實現multi-master及數據實時同步的系統架構,業務層面無需做讀寫分
    離工作,數據庫讀寫壓力都能按照既定的規則分發到 各個節點上去。在數據方面完全兼容 MariaDB 和 MySQL。
    特性:
    (1).同步複製 Synchronous replication
    (2).Active-active multi-master 拓撲邏輯
    (3).可對集羣中任一節點進行數據讀寫
    (4).自動成員控制,故障節點自動從集羣中移除
    (5).自動節點加入
    (6).真正並行的複製,基於行級
    (7).直接客戶端連接,原生的 MySQL 接口
    (8).每個節點都包含完整的數據副本
    (9).多臺數據庫中數據同步由 wsrep 接口實現
    缺點:
    (1).目前的複製僅僅支持InnoDB存儲引擎,任何寫入其他引擎的表,包括mysql.*表將不會複製,但是DDL語句會被複制的,因此創建用戶將會
    被複制,但是insert into mysql.user…將不會被複制的.
    (2).DELETE操作不支持沒有主鍵的表,沒有主鍵的表在不同的節點順序將不同,如果執行SELECT…LIMIT… 將出現不同的結果集.
    (3).在多主環境下LOCK/UNLOCK TABLES不支持,以及鎖函數GET_LOCK(), RELEASE_LOCK()…
    (4).查詢日誌不能保存在表中。如果開啓查詢日誌,只能保存到文件中。
    (5).允許最大的事務大小由wsrep_max_ws_rows和wsrep_max_ws_size定義。任何大型操作將被拒絕。如大型的LOAD DATA操作。
    (6).由於集羣是樂觀的併發控制,事務commit可能在該階段中止。如果有兩個事務向在集羣中不同的節點向同一行寫入並提交,失敗的節
    點將中止。對 於集羣級別的中止,集羣返回死鎖錯誤代碼(Error: 1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK)).
    (7).XA事務不支持,由於在提交上可能回滾。
    (8).整個集羣的寫入吞吐量是由最弱的節點限制,如果有一個節點變得緩慢,那麼整個集羣將是緩慢的。爲了穩定的高性能要求,所有的
    節點應使用統一的硬件。
    (9).集羣節點建議最少3個。
    (10).如果DDL語句有問題將破壞集羣。
    架構圖:
  2. 配置Mariadb Galera官方源地址
    在三個node上分別執行下面的操作,目的是安裝Galera。
    在/etc/yum.repos.d下創建一個repo文件

    vim /etc/yum.repos.d/mariadb.repo

    添加:
    [mariadb]
    name = MariaDB
    baseurl = http://yum.mariadb.org/10.1/centos7-amd64
    enabled=1
    gpgcheck=0

  3. 安裝Mariadb Galera
    在三個node上分別執行:

    yum install -y MariaDB-server MariaDB-client galera xinetd rsync ntpdate

    systemctl start mariadb.service

    .......

  4. 配置 MariaDB Cluster集羣
    第一個節點上,添加內容如下:

    vim /etc/my.cnf.d/client.cnf

    添加內容:
    [client]
    port = 3306
    .......

    vim /etc/my.cnf.d/server.cnf

    添加內容:
    [isamchk]
    key_buffer_size = 16M # key_buffer_size這個參數是用來設置索引塊(index blocks)緩存的大小,它被所有線程共享,嚴格說是
    它決定了數據庫索引處理的速度,尤其是索引讀的速度
    [mysqld]
    binlog_format=ROW #該參數可以有三種設置值:row、statement和mixed。row代表二進制日誌中記錄數據表每一行經過寫操作
    後被修改的最終值。各個參與同步的Salve節點,也會參照這個最終值,將自己數據表上的數據進行修改;statement形式是在日誌中記錄
    數據操作過程,而非最終的執行結果。各個參與同步的Salve節點會解析這個過程,並形成最終記錄;mixed設置值,是以上兩種記錄方
    式的混合體,MySQL服務會自動選擇當前運行狀態下最適合的日誌記錄方式。
    character-set-server = utf8 #設置數據庫的字符集
    collation-server = utf8_general_ci
    max_allowed_packet = 256M # 設置mysql接收數據包最大值,比如你執行的sql語句過大,可能會執行失敗,這個參數就是讓能
    執行的sql語句大小調高
    max_connections = 10000 # 設置mysql集羣最大的connection連接數,這個在openstack環境裏非常重要
    ignore-db-dirs = lost+found # 設置忽略把lost+found當做數據目錄
    init-connect = SET NAMES utf8 # 設置初始化字符集編碼(僅對非超級用戶有效)
    innodb_autoinc_lock_mode = 2 #這種模式下任何類型的inserts都不會採用AUTO-INC鎖,性能最好,但是在同一條語句內部產生
    auto_increment值間隙。
    innodb_buffer_pool_size = 2000M #設置緩衝池字節大小,InnoDB緩存表和索引數據的內存區域;這個值設置的越大,在不止一次
    的訪問相同的數據表數據時,消耗的磁盤I / O就越少。在一個專用的數據庫服務器,則可能將其設置爲高達80%的機器物理內存大小。不
    過在實際的測試中,發現無限的增大這個值,帶來的性能提升也並不顯著,對CPU的壓力反而增大,設置合理的值纔是最優。
    innodb_doublewrite = 0 #設置0是禁用doublewrite,一般在不關心數據一致性(比如使用了RAID0)或文件系統可以保證不會出現
    部分寫失效,你可以通過將innodb_doublewrite參數設置爲0還禁用doublewrite。
    innodb_file_format = Barracuda #設置文件格式爲Barracuda,Barracude是innodb-plugin後引入的文件格式,同時
    Barracude也支持Antelope文件格式,Barracude在數據壓縮上優於Antelope,配合下面的innodb_file_per_table=1使用
    innodb_file_per_table = 1 #開啓獨立的表空間,使每個 Innodb的表,有自已獨立的表空間。如刪除文件後可以回收那部分空間。
    .......
    [galera]
    bind-address=10.1.1.120 # mysql服務綁定的IP
    wsrep_provider = /usr/lib64/galera/libgalera_smm.so
    wsrep_cluster_address = "gcomm://10.1.1.120,10.1.1.121,10.1.1.122" #gcomm是特殊的地址,僅僅是Galera cluster初始化啓動時
    候使用
    .......
    [mysqld_safe]
    nice = 0 # 調用系統的nice命令設置進程優先級,linux系統的普通用戶只能在0-19中設置,mysql用戶爲普通用戶,設置爲0 應該就是
    讓mysql進程優先級最高了。
    .......
    [mysqldump]
    max_allowed_packet = 16M # MySQL根據配置文件會限制Server接受的數據包大小。有時候大的插入和更新會受
    max_allowed_packet 參數限制,導致寫入或者更新失敗。
    quick # 強制 mysqldump 從服務器查詢取得記錄直接輸出而不是取得所有記錄後將它們緩存到內存中
    quote-names #使用()引起表和列名。默認爲打開狀態,使用--skip-quote-names取消該選項。
    第二個和第三個節點的my.cnf配置如下,注意改下相關IP和節點名稱:

    vim /etc/my.cnf.d/client.cnf

    [client]
    port = 3306
    socket = /var/lib/mysql/mysql.sock
    .......
    [mysqld]
    binlog_format=ROW
    character-set-server = utf8
    collation-server = utf8_general_ci
    max_allowed_packet = 256M
    max_connections = 10000
    .......
    innodb_autoinc_lock_mode = 2
    innodb_buffer_pool_size = 2000M
    innodb_doublewrite = 0
    .......
    [galera]
    bind-address = 10.1.1.121
    wsrep_provider = /usr/lib64/galera/libgalera_smm.so
    wsrep_cluster_address = "gcomm://10.1.1.120,10.1.1.121,10.1.1.122"
    .......
    [mysqld_safe]
    nice = 0
    .......
    vim mysql-clients.cnf:
    [mysqldump]
    max_allowed_packet = 16M
    .......

  5. 設置mysql最大連接數
    修改完server.cnf,然後後修改下mysql.service文件,讓數據庫最大支持連接數調整到10000(這樣做是很有用的,筆者在維護
    openstack環境中,在VM數量比較大負載較高的時候,經常出現因爲數據庫連接數不夠導致訪問界面出現各種內容刷不出的情況)
    .......
    都修改完畢後,執行systemctl daemon-reload
    最等啓動了mariadb服務就能通過show variables like 'max_connections'; 可查看當前連接數值
  6. 關於mysql服務的啓動順序
    三個節點my.cnf都配置完成後,全部執行systemctl stop mariadb.service && systemctl disable mariadb.service
    然後在第一個節點用下面的命令初始化啓動mariadb集羣服務

    /usr/sbin/mysqld --wsrep-new-cluster --user=root &

    .......

  7. 查看mariadb數據庫集羣狀態

    mysql -uroot -p

    .......
    二、安裝RabbitMQ Cluster集羣

  8. 每個節點都安裝erlang

    yum install -y erlang

    .......

  9. 每個節點都啓動rabbitmq及設置開機啓動

    systemctl enable rabbitmq-server.service

    systemctl restart rabbitmq-server.service

    systemctl status rabbitmq-server.service

    systemctl list-unit-files |grep rabbitmq-server.service

    .......
    7 .查看RabbitMQ插件

    /usr/lib/rabbitmq/bin/rabbitmq-plugins list

    .......

  10. 查看rabbitmq狀態

    rabbitmqctl cluster_status

  11. 集羣配置
    .......
    在controller1上操作:

    scp /var/lib/rabbitmq/.erlang.cookie controller2:/var/lib/rabbitmq/.erlang.cookie

    .......
    在controller2上操作:

    systemctl restart rabbitmq-server

    rabbitmqctl stop_app

    rabbitmqctl join_cluster --ram rabbit@controller1

    rabbitmqctl start_app

    .......
    查看集羣狀態:

    rabbitmqctl cluster_status

  12. 集羣管理
    如果遇到rabbitmq腦裂情況,按以下步驟操作,重新設置集羣:
    登錄沒加入集羣的節點:
    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl start_app
    .......
    刪除後執行systemctl restart rabbitmq-server rabbitmq服務一般能起來。
  13. RabbitMQ優化
    .......
    三、 安裝Pacemaker
    三個ctr節點需要安裝以下包:
    pacemaker
    pcs (CentOS or RHEL) or crmsh
    corosync
    fence-agents (CentOS or RHEL) or cluster-glue
    resource-agents
    添加一個network_ha-clustering_Stable的源:

    cd /etc/yum.repos.d

    vim ha-clustering.repo

    添加以下內容:
    [network_ha-clustering_Stable]
    name=Stable High Availability/Clustering packages (CentOS_CentOS-7)
    type=rpm-md
    .......
    gpgkey=http://download.opensuse.org/repositories/network:/haclustering:/
    Stable/CentOS_CentOS//repodata/repomd.xml.key

    yum install -y lvm2 cifs-utils quota psmisc

    yum install -y pcs pacemaker corosync fence-agents-all resource-agents

    .......

  14. 三個ctr節點都設置PCS服務開機啓動

    systemctl enable pcsd

    systemctl enable corosync

    .......

  15. 設置密碼,每個節點就需要設置,而且密碼必須一樣

    passwd hacluster

  16. 配置編寫corosync.conf 文件

    vim /etc/corosync/corosync.conf

    添加以下內容:
    totem {
    version: 2
    secauth: off
    cluster_name: openstack-cluster
    transport: udpu
    }
    .......
    quorum {
    provider: corosync_votequorum
    }
    logging {
    to_logfile: yes
    logfile: /var/log/cluster/corosync.log
    to_syslog: yes
    }
    在ctr1節點上生成密鑰:

    cd /etc/corosync/

    ssh-keygen -t rsa

    corosync-keygen

    chmod 400 authkey

    .......

  17. 設置集羣相互驗證, 在controller1上操作即可

    pcs cluster auth controller1 controller2 controller3 -u hacluster -p passw0rd --force

  18. 在controller1上創建並啓動名爲openstack-cluster的集羣,其中controller1 controller2 controller3爲集羣成員:

    pcs cluster setup --force --name openstack-cluster controller1 controller2 controller3

  19. 設置集羣自啓動

    pcs cluster enable --all

    .......

  20. 通過crm設置VIP

    crm

    crm(live)# config
    crm(live)configure# primitive vip ocf:heartbeat:IPaddr2 params ip=9.110.187.128 cidr_netmask=24 nic=eno16777736 op .......
    四、 安裝HAProxy

  21. 安裝Haproxy
    在三個節點上分別安裝HAProxy
    .......
  22. 跟rsyslog結合配置haproxy日誌,在三個節點上都操作

    cd /etc/rsyslog.d/

    vim haproxy.conf

    添加:
    $ModLoad imudp
    $UDPServerRun 514
    $template Haproxy,"%rawmsg% \n"
    local0.=info -/var/log/haproxy.log;Haproxy
    local0.notice -/var/log/haproxy-status.log;Haproxy

    systemctl restart rsyslog.service

    systemctl status rsyslog.service

  23. 在三個節點上配置haproxy.cfg

    cd /etc/haproxy/

    mv haproxy.cfg haproxy.cfg.orig

    vim haproxy.cfg

    添加下面內容:
    global
    log 127.0.0.1 local0
    log 127.0.0.1 local1 notice
    maxconn 4096
    chroot /usr/share/haproxy
    user haproxy
    group haproxy
    daemon
    .......
    frontend stats-front
    bind *:8088
    mode http
    default_backend stats-back
    backend stats-back
    mode http
    balance source
    stats uri /haproxy/stats
    stats auth admin:passw0rd
    listen RabbitMQ-Server-Cluster
    bind 9.110.187.128:56720
    mode tcp
    balance roundrobin
    option tcpka
    server controller1 controller1:5672 check inter 5s rise 2 fall 3
    server controller2 controller2:5672 check inter 5s rise 2 fall 3
    server controller3 controller3:5672 check inter 5s rise 2 fall 3
    listen RabbitMQ-Web
    bind 9.110.187.128:15673
    mode tcp
    balance roundrobin
    option tcpka
    server controller1 controller1:15672 check inter 5s rise 2 fall 3
    server controller2 controller2:15672 check inter 5s rise 2 fall 3
    server controller3 controller3:15672 check inter 5s rise 2 fall 3
    .......
    listen nova_compute_api_cluster
    bind 9.110.187.128:8774
    balance source
    option tcpka
    option httpchk
    option tcplog
    server controller1 controller1:9774 check inter 2000 rise 2 fall 5
    server controller2 controller2:9774 check inter 2000 rise 2 fall 5
    server controller3 controller3:9774 check inter 2000 rise 2 fall 5
    listen nova_vncproxy_cluster
    bind 9.110.187.128:6080
    balance source
    option tcpka
    option tcplog
    server controller1 controller1:6080 check inter 2000 rise 2 fall 5
    server controller2 controller2:6080 check inter 2000 rise 2 fall 5
    server controller3 controller3:6080 check inter 2000 rise 2 fall 5
    .......
    重啓下haproxy,如果發現服務狀態不對,先不管,後面改系統內核參數可以解決

    systemctl start haproxy.service

    systemctl status haproxy.service

  24. 配置Haproxy能監控Galera數據庫集羣
    在controller1上進入mysql,創建clustercheck
    MariaDB [(none)]> grant process on . to 'clustercheckuser'@'localhost' identified by 'clustercheckpassword!';
    .......
    三個節點分別創建clustercheck文本,裏面是clustercheckuser用戶和密碼

    vim /etc/sysconfig/clustercheck

    添加:
    MYSQL_USERNAME=clustercheckuser
    .......
    確認下是否存在/usr/bin/clustercheck 腳本,如果沒有從網上下載一個,然後放到/usr/bin目錄下面,記得chmod +x
    /usr/bin/clustercheck 賦予權限
    .......
    在controller1上檢查haproxy服務狀態

    clustercheck (存在/user/bin/clustercheck可以直接運行clustercheck命令)

    結合xinetd監控Galera服務(三個節點都安裝xinetd)

    yum -y install xinetd

    vim /etc/xinetd.d/mysqlchk

    添加以下內容:

    default: on

    .......
    .......
    scp /etc/xinetd.d/mysqlchk controller3:/etc/xinetd.d/mysqlchk

    vim /etc/services

    最後一行添加:mysqlchk 9200/tcp # mysqlchk
    重啓xinetd服務

    systemctl restart xinetd.service

    systemctl status xinetd.service

  25. 三個節點修改內核參數
    修改內核參數的作用是讓haproxy正常啓動
    .......
  26. 三個節點啓動haproxy服務

    systemctl restart haproxy.service

    systemctl status haproxy.service

  27. 訪問haproxy 前端web平臺
    http://9.110.187.128:8088/haproxy/stats admin/passw0rd
    Galera集羣服務已經監控成功
    五、安裝配置Keystone
  28. 配置openstack Mitaka yum源

    cd /etc/yum.repos.d

    vim openstack-mitaka.repo

    添加:
    .......
    2、在controller1上創建keystone數據庫

    mysql -uroot -p

    MariaDB [(none)]> CREATE DATABASE keystone;
    3、在controller1上創建數據庫用戶及賦予權限
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone. TO 'keystone'@'localhost' IDENTIFIED BY 'passw0rd';
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.
    TO 'keystone'@'%' IDENTIFIED BY 'passw0rd';
    注意將passw0rd 替換爲自己的數據庫密碼

  29. 在三個節點上分別安裝keystone

    yum -y install openstack-keystone httpd mod_wsgi python-openstackclient memcached python-memcached openstackutils

    5.在三個節點上分別啓動memcache服務並設置開機自啓動

    systemctl enable memcached.service

    systemctl start memcached.service

    systemctl status memcached.service

    6、配置/etc/keystone/keystone.conf文件
    .......

  30. 配置httpd.conf文件

    vim /etc/httpd/conf/httpd.conf

    ServerName controller1 (如果是controller2那就寫controller2)
    Listen 8080 (80->8080 haproxy裏用了80,不修改啓動不了)

  31. 配置keystone與httpd結合

    vim /etc/httpd/conf.d/wsgi-keystone.conf

    .......

  32. 在controller1上設置數據庫同步

    su -s /bin/sh -c "keystone-manage db_sync" keystone

  33. 三個節點都要啓動httpd,並設置httpd開機啓動

    systemctl enable httpd.service

    systemctl start httpd.service

    systemctl status httpd.service

    systemctl list-unit-files |grep httpd.service

  34. 在controller1上創建 admin 用戶角色

    keystone-manage bootstrap \

    --bootstrap-password passw0rd \
    --bootstrap-username admin \
    --bootstrap-project-name admin \
    .......
    這樣,就可以在 openstack 命令行裏使用 admin 賬號登錄了。
    驗證,測試是否已配置合理:

    openstack project list --os-username admin --os-project-name admin --os-user-domain-id default --os-project-domain-id

    default --os-identity-api-version 3 --os-auth-url http://demo.openstack.com:5000 --os-password passw0rd

  35. 在controller1上創建admin用戶環境變量,創建/root/admin-openrc 文件並寫入如下內容:

    vim /root/admin-openrc

    添加以下內容:
    export OS_USER_DOMAIN_ID=default
    export OS_PROJECT_DOMAIN_ID=default
    export OS_USERNAME=admin
    .......

  36. 在controller1上創建endpoint

    source /root/admin-openrc

    openstack endpoint create --region RegionOne identity public http://demo.openstack.com:5000/v3

    openstack endpoint create --.......

  37. 在controller1上創建service項目

    openstack project create --domain default --description "Service Project" service

    .......

  38. 在controller1上創建demo用戶環境變量,創建/root/demo-openrc 文件並寫入下列內容:

    vim /root/demo-openrc

    添加:
    export OS_USER_DOMAIN_ID=default
    export OS_PROJECT_DOMAIN_ID=default
    export OS_USERNAME=demo
    export OS_PROJECT_NAME=demo
    .......

  39. 另外兩個節點Keystone的安裝
    另外兩個controller節點只需要從第三點開始安裝即可
    具體要操作的步驟點列表: 4、 5、6 、7、8、 10、11、12
    六、安裝配置glance
    1、在controller1上創建glance數據庫
    MariaDB [(none)]> CREATE DATABASE glance;
    2、在controller1上創建數據庫用戶並賦予權限
    .......
    3、在controller1上創建glance用戶及賦予admin權限

    source /root/admin-openrc

    .......
    4、在controller1上創建image服務

    openstack service create --name glance --description "OpenStack Image service" image

    5、在controller1上創建glance的endpoint

    openstack endpoint create --region RegionOne image public http://demo.openstack.com:9292

    .......
    6、在controller1、2、3上安裝glance相關rpm包

    yum install openstack-glance python-glance python-glanceclient -y

    7、在controller1、2、3上修改glance配置文件/etc/glance/glance-api.conf
    注意紅色的密碼設置成你自己的

    >/etc/glance/glance-api.conf

    openstack-config --set /etc/glance/glance-api.conf DEFAULT debug False

    openstack-config --set /etc/glance/glance-api.conf DEFAULT verbose True

    openstack-config --set /etc/glance/glance-api.conf DEFAULT bind_host controller1

    openstack-config --set /etc/glance/glance-api.conf DEFAULT bind_port 9393

    openstack-config --set /etc/glance/glance-api.conf DEFAULT registry_host controller1

    openstack-config --set /etc/glance/glance-api.conf DEFAULT registry_port 9191

    openstack-config --set /etc/glance/glance-api.conf DEFAULT auth_region RegionOne

    openstack-config --set /etc/glance/glance-api.conf DEFAULT registry_client_protocol http

    .......
    8、在controller1、2、3上修改glance配置文件/etc/glance/glance-registry.conf:

    >/etc/glance/glance-registry.conf

    openstack-config --set /etc/glance/glance-registry.conf DEFAULT debug False

    openstack-config --set /etc/glance/glance-registry.conf DEFAULT verbose True

    openstack-config --set /etc/glance/glance-registry.conf DEFAULT bind_host controller1

    openstack-config --set /etc/glance/glance-registry.conf DEFAULT bind_port 9191

    openstack-config --set /etc/glance/glance-registry.conf DEFAULT workers 4

    openstack-config --set /etc/glance/glance-registry.conf oslo_messaging_rabbit rabbit_hosts 10.1.1.120:5672, 10.1.1.121:5672,

    10.1.1.122:5672
    .......
    9、controller1同步glance數據庫

    su -s /bin/sh -c "glance-manage db_sync" glance

    10、在controller1、2、3上啓動glance及設置開機啓動

    systemctl enable openstack-glance-api.service openstack-glance-registry.service

    .......
    11、在controller1、2、3上將glance版本號寫入環境變量中

    echo " " >> /root/admin-openrc && \

    echo " " >> /root/demo-openrc && \

    .......

  40. 搭建glance後端存儲
    因爲是HA環境,3個控制節點必須要有一個共享的後端存儲,不然request發起請求的時候不確定會去調用哪個控制節點的glance服務,
    如果沒有共享存儲池存鏡像,那麼會遇到創建VM時候image找不到的問題。
    這裏我們採用NFS的方式把glance的後端存儲建立起來,當然在實際的生產環境當中,一般會用ceph、GlusterFS等方式,這裏我們以
    NFS爲例子來講訴後端存儲的搭建。
    首先準備一臺物理機或者虛擬機,要求空間要大,網絡最好是在萬兆
    這裏我們用10.1.1.134這臺虛擬機
    首先在這臺機器上安裝glance組件:
    .......

    systemctl start nfs-server

    讓NFS共享目錄生效:

    showmount -e

    接着在3個controller節點上做如下操作:

    mount -t nfs 10.1.1.134:/var/lib/glance/images /var/lib/glance/images

    echo "/usr/bin/mount -t nfs 10.1.1.134:/var/lib/glance/ /var/lib/glance/" >> /etc/rc.d/rc.local

    .......
    13、在controller1上下載測試鏡像文件

    wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

    14、在controller1上傳鏡像到glance

    source /root/admin-openrc

    glance image-create --name "cirros-0.3.4-x86_64" --file cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --containerformat

    bare --visibility public --progress
    如果你做好了一個CentOS6.7系統的鏡像,也可以用這命令操作,例:
    .......
    查看鏡像列表:

    glance image-list

    15、 其他兩個節點重複6、7、8、10、11步驟
    七、安裝配置nova
    1、在controller1上創建nova數據庫
    MariaDB [(none)]> CREATE DATABASE nova;
    .......
    2、在controller1上創建數據庫用戶並賦予權限
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'passw0rd';
    .......
    3、在controller1上創建nova用戶及賦予admin權限

    source /root/admin-openrc

    openstack user create --domain default nova --password passw0rd

    .......
    4、在controller1上創建computer服務

    openstack service create --name nova --description "OpenStack Compute" compute

    5、在controller1上創建nova的endpoint

    openstack endpoint create --region RegionOne compute public http://demo.openstack.com:8774/v2.1/%\(tenant_id\)s

    .......
    6、在controller1、2、3上安裝nova相關軟件

    yum install -y openstack-nova-api openstack-nova-cert openstack-nova-conductor openstack-nova-console openstacknova-

    novncproxy openstack-nova-scheduler
    7、在controller1、2、3上配置nova的配置文件/etc/nova/nova.conf

    >/etc/nova/nova.conf

    openstack-config --set /etc/nova/nova.conf DEFAULT debug False

    openstack-config --set /etc/nova/nova.conf DEFAULT verbose True

    openstack-config --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata

    openstack-config --set /etc/nova/nova.conf DEFAULT osapi_compute_listen_port 9774

    openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 10.1.1.120

    openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron True

    openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver

    .......
    注意:其他節點上記得替換IP,還有密碼,文檔紅色以及綠色的地方。
    8、在controller1上同步nova數據

    su -s /bin/sh -c "nova-manage api_db sync" nova

    .......
    9、在controller1上設置開機啓動

    systemctl enable openstack-nova-api.service openstack-nova-cert.service openstack-nova-consoleauth.service openstacknova-

    scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
    .......
    .......

    systemctl list-unit-files |grep openstack-nova-*

    10、隨便一個節點上驗證nova服務

    unset OS_TOKEN OS_URL

    source /root/admin-openrc

    .......

    openstack endpoint list 查看endpoint list命令

  41. controller2 & controller3 節點分別重複6、7、9、10
    注意第7步的綠色IP記得換成本機的IP
    八、安裝配置neutron
    1、在controller1上創建neutron數據庫
    MariaDB [(none)]> CREATE DATABASE neutron;
    2、在controller1上創建數據庫用戶並賦予權限
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron. TO 'neutron'@'localhost' IDENTIFIED BY 'passw0rd';
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.
    TO 'neutron'@'%' IDENTIFIED BY 'passw0rd';
    3、在controller1上創建neutron用戶及賦予admin權限

    source /root/admin-openrc

    .......
    4、在controller1上創建network服務

    openstack service create --name neutron --description "OpenStack Networking" network

    5、在controller1上創建endpoint

    openstack endpoint create --region RegionOne network public http://demo.openstack.com:9696

    .......
    6、在controller1、2、3上安裝neutron相關軟件

    yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables -y

    7、在controller1、2、3上配置neutron配置文件/etc/neutron/neutron.conf

    >/etc/neutron/neutron.conf

    openstack-config --set /etc/neutron/neutron.conf DEFAULT debug False

    openstack-config --set /etc/neutron/neutron.conf DEFAULT verbose true

    openstack-config --set /etc/neutron/neutron.conf DEFAULT bind_host controller1

    openstack-config --set /etc/neutron/neutron.conf DEFAULT bind_port 9797

    openstack-config --set /etc/neutron/neutron.conf DEFAULT core_plugin neutron.plugins.ml2.plugin.Ml2Plugin

    openstack-config --set /etc/neutron/neutron.conf DEFAULT service_plugins

    neutron.services.l3_router.l3_router_plugin.L3RouterPlugin,neutron.services.metering.metering_plugin.MeteringPlugin

    openstack-config --set /etc/neutron/neutron.conf DEFAULT rpc_backend rabbit

    .......

    openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_max_retries 0

    openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit amqp_durable_queues False

    openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_uri http://demo.openstack.com:5000

    openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_url http://demo.openstack.com:35357

    .......

    openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_vxlan vni_ranges 1:1000

    openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup enable_ipset True

    9、在controller1、2、3上配置/etc/neutron/plugins/ml2/linuxbridge_agent.ini

    openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini DEFAULT debug false

    openstack-config --

    .......
    注意eno67109408是public網卡,一般這裏寫的網卡名都是能訪問外網的,如果不是外網網卡,那麼VM就會與外界網絡隔離。
    10、在controller1、2、3上配置 /etc/neutron/l3_agent.ini

    openstack-config --set /etc/neutron/l3_agent.ini DEFAULT interface_driver

    neutron.agent.linux.interface.BridgeInterfaceDriver
    .......
    11、在controller1、2、3上配置/etc/neutron/dhcp_agent.ini

    openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT interface_driver

    neutron.agent.linux.interface.BridgeInterfaceDriver
    .......
    12、在controller1、2、3上重新配置/etc/nova/nova.conf,配置這步的目的是讓compute節點能使用上neutron網絡

    openstack-config --set /etc/nova/nova.conf neutron url http://demo.openstack.com:9696

    openstack-config --set /etc/nova/nova.conf neutron auth_url http://demo.openstack.com:35357

    openstack-config --set /etc/nova/nova.conf neutron auth_plugin password

    .......
    13、在controller1、2、3上將dhcp-option-force=26,1450寫入/etc/neutron/dnsmasq-neutron.conf

    echo "dhcp-option-force=26,1450" >/etc/neutron/dnsmasq-neutron.conf

    14、在controller1、2、3上配置/etc/neutron/metadata_agent.ini

    openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT nova_metadata_ip demo.openstack.com

    .......
    15、在controller1、2、3上創建軟鏈接

    ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

    16、在controller1上同步數據庫

    su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file

    /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
    17、在controller1、2、3上重啓nova服務,因爲剛纔改了nova.conf

    systemctl restart openstack-nova-api.service

    systemctl status openstack-nova-api.service

    18、在controller1、2、3上重啓neutron服務並設置開機啓動

    systemctl enable neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutronmetadata-

    agent.service
    .......
    19、在controller1、2、3上啓動neutron-l3-agent.service並設置開機啓動

    systemctl enable neutron-l3-agent.service

    systemctl start neutron-l3-agent.service

    systemctl status neutron-l3-agent.service

    20、隨便一節點上執行驗證

    source /root/admin-openrc

    .......

    neutron agent-list

    21、創建vxLan模式網絡,讓虛擬機能外出
    a. 首先先執行環境變量

    source /root/admin-openrc

    b. 創建flat模式的public網絡,注意這個public是外出網絡,必須是flat模式的
    .......
    f. 創建路由,我們在界面上操作
    點擊項目-->網絡-->路由-->新建路由
    路由名稱隨便命名,我這裏寫"router", 管理員狀態,選擇"上"(up),外部網絡選擇"provider"
    點擊"新建路由"後,提示創建router創建成功!
    .......
    22、檢查網絡服務

    neutron agent-list

    看服務是否是笑臉
    九、安裝Dashboard
    1、安裝dashboard相關軟件包

    yum install openstack-dashboard -y

    2、修改配置文件/etc/openstack-dashboard/local_settings

    vim /etc/openstack-dashboard/local_settings

    直接覆蓋我給的local_settings文件也行(爲了減少出錯,大家還是用我提供的local_settings文件替換覆蓋)
    3、啓動dashboard服務並設置開機啓動

    systemctl enable httpd.service memcached.service

    systemctl restart httpd.service memcached.service

    systemctl status httpd.service memcached.service

    到此,Controller HA節點搭建完畢,打開firefox瀏覽器即可訪問http://9.110.187.128/dashboard/ 可進入openstack界面!
    十、安裝配置cinder
    1、在controller1上創建數據庫用戶並賦予權限
    MariaDB [(none)]> CREATE DATABASE cinder;
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder. TO 'cinder'@'localhost' IDENTIFIED BY 'passw0rd';
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.
    TO 'cinder'@'%' IDENTIFIED BY 'passw0rd';
    2、在controller1上創建cinder用戶並賦予admin權限

    source /root/admin-openrc

    openstack user create --domain default cinder --password passw0rd

    openstack role add --project service --user cinder admin

    3、在controller1上創建volume服務

    openstack service create --name cinder --description "OpenStack Block Storage" volume

    openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2

    4、在controller1上創建endpoint

    openstack endpoint create --region RegionOne volume public http://demo.openstack.com:8776/v1/%\(tenant_id\)s

    .......
    5、在controller1、2、3上安裝cinder相關服務

    yum install openstack-cinder -y

    6、在controller1、2、3上配置cinder配置文件

    >/etc/cinder/cinder.conf

    openstack-config --set /etc/cinder/cinder.conf DEFAULT debug False

    openstack-config --set /etc/cinder/cinder.conf DEFAULT verbose True

    openstack-config --set /etc/cinder/cinder.conf DEFAULT my_ip 10.1.1.120

    openstack-config --set /etc/cinder/cinder.conf DEFAULT rpc_backend rabbit

    openstack-config --set /etc/cinder/cinder.conf DEFAULT osapi_volume_listen_port 8778

    openstack-config --set /etc/cinder/cinder.conf DEFAULT auth_strategy keystone

    .......

    openstack-config --set /etc/cinder/cinder.conf oslo_messaging_rabbit rabbit_retry_backoff 2

    openstack-config --set /etc/cinder/cinder.conf oslo_messaging_rabbit rabbit_max_retries 0

    openstack-config --set /etc/cinder/cinder.conf oslo_messaging_rabbit amqp_durable_queues False

    openstack-config --set /etc/cinder/cinder.conf keystone_authtoken auth_uri http://demo.openstack.com:5000

    openstack-config --set /etc/cinder/cinder.conf keystone_authtoken auth_url http://demo.openstack.com:35357

    .......

    openstack-config --set /etc/cinder/cinder.conf oslo_concurrency lock_path /var/lib/cinder/tmp

    7、在controller1上同步數據庫

    su -s /bin/sh -c "cinder-manage db sync" cinder

    8、在controller1、2、3上啓動cinder服務,並設置開機啓動

    systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service

    .......
    注意!其他controller2和controller3 重複做5、6、8步即可!
    11、安裝Cinder節點,Cinder節點這裏我們需要額外的添加一個硬盤(/dev/sdb)用作cinder的存儲服務(注意!這一步是在cinder節點
    操作的)

    yum install lvm2 -y

    .......

  42. 編輯存儲節點lvm.conf文件(注意!這一步是在cinder節點操作的)

    vim /etc/lvm/lvm.conf

    在devices 下面添加 filter = [ "a/sda/", "a/sdb/", "r/.*/"] ,如圖:
    然後重啓下lvm2服務:

    systemctl restart lvm2-lvmetad.service

    systemctl status lvm2-lvmetad.service

    15、安裝openstack-cinder、targetcli (注意!這一步是在cinder節點操作的)
    yum install openstack-cinder targetcli python-keystone ntpdate -y
    16、配置cinder配置文件(注意!這一步是在cinder節點操作的)

    >/etc/cinder/cinder.conf

    openstack-config --set /etc/cinder/cinder.conf DEFAULT debug False

    openstack-config --set /etc/cinder/cinder.conf DEFAULT verbose True

    .......

    openstack-config --set /etc/cinder/cinder.conf oslo_messaging_rabbit rabbit_ha_queues True

    openstack-config --set /etc/cinder/cinder.conf oslo_messaging_rabbit rabbit_use_ssl False

    openstack-config --set /etc/cinder/cinder.conf oslo_messaging_rabbit rabbit_retry_interval 1

    .......

    openstack-config --set /etc/cinder/cinder.conf keystone_authtoken auth_uri http://demo.openstack.com:5000

    openstack-config --set /etc/cinder/cinder.conf keystone_authtoken auth_url http://demo.openstack.com:35357

    openstack-config --set /etc/cinder/cinder.conf keystone_authtoken memcached_servers

    controller1:11211,controller2:11211,controller3:11211

    openstack-config --set /etc/cinder/cinder.conf keystone_authtoken auth_type password

    openstack-config --set /etc/cinder/cinder.conf keystone_authtoken project_domain_name default

    openstack-config --set /etc/cinder/cinder.conf keystone_authtoken user_domain_name default

    .......

    openstack-config --set /etc/cinder/cinder.conf lvm iscsi_protocol iscsi

    openstack-config --set /etc/cinder/cinder.conf lvm iscsi_helper lioadm

    openstack-config --set /etc/cinder/cinder.conf oslo_concurrency lock_path /var/lib/cinder/tmp

    17、啓動openstack-cinder-volume和target並設置開機啓動(注意!這一步是在cinder節點操作的)

    systemctl enable openstack-cinder-volume.service target.service

    .......
    18、在任意一個節點上驗證cinder服務是否正常

    source /root/admin-openrc

    cinder service-list

    十一、把相關服務和資源添加到Pacermaker

  43. Pacermaker參數說明
    primitive添加格式:
    primitive 唯一ID 資源代理類型:資源代理的提供程序:資源代理名稱
    params attr_list
    meta attr_list
    op op_type [<attribute>=<value>...] ...]
    primitive 參數說明:
    資源代理類型: lsb, ocf, stonith, service
    資源代理的提供程序: heartbeat , pacemaker
    資源代理名稱:即resource agent, 如:IPaddr2,httpd, mysql
    params:實例屬性,是特定資源類的參數,用於確定資源類的行爲方式及其控制的服務實例。
    meta:元屬性, 是可以爲資源添加的選項。它們告訴 CRM 如何處理特定資源。
    op:操作,默認情況下,羣集不會確保您的資源一直正常。要指示羣集確保資源狀況依然正常,需要向資源的定義中添加一個監視操作
    monitor。可爲所有類或資源代理添加monitor。
    op_type :包括 start,stop,monitor
    interval :執行操作的頻率。單位:秒。
    timeout : 需要等待多久才聲明操作失敗。
    requires :需要滿足什麼條件才能發生此操作。允許的值:nothing、quorum 和 fencing。默認值取決於是否啓用屏障和資源的類是否
    爲 stonith。對於 STONITH 資源,默認值爲 nothing。
    on-fail :此操作失敗時執行的操作。允許的值:
    ignore:假裝資源沒有失敗。
    block:不對資源執行任何進一步操作。
    stop:停止資源並且不在其他位置啓動該資源。
    restart:停止資源並(可能在不同的節點上)重啓動。
    fence:關閉資源失敗的節點 (STONITH)。
    standby:將所有資源從資源失敗的節點上移走。
    enabled 如果值爲 false,將操作視爲不存在。允許的值:true、false。
    例:
    primitive r0 ocf:linbit:drbd \
    params drbd_resource=r0 \
    op monitor role=Master interval=60s \
    op monitor role=Slave interval=300s
    meta元屬性參數說明:
    priority:如果不允許所有的資源都處於活動狀態,羣集會停止優先級較低的資源以便保持較高優先級資源處於活動狀態。
    target-role: 此資源試圖保持的狀態,包括started和stopped
    is-managed:是否允許羣集啓動和停止資源,包括true和 false。
    migration-threshold:用來定義資源的故障次數,假設已經爲資源配製了一個首選在節點上運行的位置約束。如果那裏失敗了,系統會檢
    查 migration-threshold 並與故障計數進行比較。如果故障計數 >= migration-threshold,會將資源遷移到下一個自選節點。
    默認情況下,一旦達到閾值,就只有在管理員手動重置資源的故障計數後(在修復故障原因後),才允許在該節點上運行有故障的資源。
    但是,可以通過設置資源的 failure-timeout 選項使故障計數失效。如果設置migration-threshold=2 和 failure-timeout=60s ,將會導
    致資源在兩次故障後遷移到新的節點,並且可能允許在一分鐘後移回(取決於黏性和約束分數)。
    遷移閾值概念有兩個例外,在資源啓動失敗或停止失敗時出現:啓動故障會使故障計數設置爲 INFINITY,因此總是導致立即遷移。停止故障會
    導致屏障(stonith-enabled 設置爲 true 時,這是默認設置)。如果不定義 STONITH資源(或 stonith-enabled 設置爲 false),則該資源根本
    不會遷移。
    failure-timeout:在恢復爲如同未發生故障一樣正常工作(並允許資源返回它發生故障的節點)之前,需要等待幾秒鐘,,默認值0
    (disabled)
    resource-stickiness:資源留在所處位置的自願程度如何,即黏性,默認爲0。
    multiple-active:如果發現資源在多個節點上活動,羣集該如何操作,包括:
    block(將資源標記爲未受管),stop_only(停止所有活動實例),stop_start(默認值,停止所有活動實例,並在某個節點啓動資源)
    requires:定義某種條件下資源會被啓動。默認資源會被fencing,爲以下這幾種值時除外
    • nothing - 集羣總能啓動資源;
    • quorum - 集羣只有在大多數節點在線時能啓動資源,當stonith-enabled爲false 或資源爲stonith時,其爲默認值;
    • fencing - 集羣只有在大多數節點在線,或在任何失敗或未知節點被關閉電源時,才能啓動資源;
    • unfencing - 集羣只有在大多數節點在線,或在任何失敗或未知節點被關閉電源時並且只有當節點沒被fencing時,才能啓動資源。當爲
      某一fencing設備,而將stonith的meta參數設置爲provides=unfencing時,其爲默認值。
  44. 添加RabbitMQ 服務到PCS
    rabbitmq的PCS資源在/usr/lib/ocf/resource.d/rabbitmq 下
    在每個控制節點上操作:

    systemctl disable rabbitmq-server

    在controller1上操作:

    cat /var/lib/rabbitmq/.erlang.cookie 查看本機rabbitmq cookie值,下面紅色部分就是erlang cookie值

    crm configure

    primitive p_rabbitmq-server ocf:rabbitmq:rabbitmq-server-ha \
    params erlang_cookie=OBXLKSWFQVGZLAUBLIKX node_port=5672 \
    op monitor interval=30 timeout=60 \
    op monitor interval=27 role=Master timeout=60 \
    op start interval=0 timeout=360 \
    op stop interval=0 timeout=120 \
    op promote interval=0 timeout=120 \
    op demote interval=0 timeout=120 \
    op notify interval=0 timeout=180 \
    meta migration-threshold=10 failure-timeout=30s resource-stickiness=100
    .......
    做完資源添加操作大概過4-5分鐘後,服務才能接管起來:
    crm status

  45. 添加haproxy到PCS
    在每個控制節點上操作:

    systemctl disable haproxy

    .......

  46. 添加glance相關服務到PCS
    在每個控制節點上操作:

    systemctl disable openstack-glance-api openstack-glance-registry

    在controller1上操作:

    crm configure

    primitive openstack-glance-api systemd:openstack-glance-api \
    op start interval=0s timeout=30 \
    op stop interval=0s timeout=30 \
    op monitor interval=30 timeout=30
    .......
    commit

  47. 添加nova相關服務到PCS
    在每個控制節點上操作:
    #systemctl disable openstack-nova-api openstack-nova-cert openstack-nova-consoleauth openstack-nova-scheduler
    openstack-nova-conductor openstack-nova-novncproxy
    在controller1上操作:

    crm configure

    primitive openstack-nova-api systemd:openstack-nova-api \
    op start interval=0s timeout=45 \
    op stop interval=0s timeout=45 \
    op monitor interval=30 timeout=30
    primitive openstack-nova-cert systemd:openstack-nova-cert \
    op start interval=0s timeout=45 \
    op stop interval=0s timeout=45 \
    op monitor interval=30 timeout=30
    .......
    commit
    clone openstack-nova-api-clone openstack-nova-api \
    meta target-role=Started
    clone openstack-nova-cert-clone openstack-nova-cert \
    meta target-role=Started
    clone openstack-nova-conductor-clone openstack-nova-conductor \
    meta target-role=Started
    clone openstack-nova-novncproxy-clone openstack-nova-novncproxy \
    meta target-role=Started
    clone openstack-nova-scheduler-clone openstack-nova-scheduler \
    meta target-role=Started
    commit

  48. 添加cinder相關服務到PCS
    在每個控制節點上操作:

    systemctl disable openstack-cinder-api openstack-cinder-scheduler

    在controller1上操作:

    crm configure

    primitive openstack-cinder-api systemd:openstack-cinder-api \
    op start interval=0s timeout=45 \
    op stop interval=0s timeout=45 \
    op monitor interval=30 timeout=30
    .......
    commit

  49. 添加neutron相關服務到PCS
    在每個控制節點上操作:

    systemctl disable neutron-server neutron-l3-agent neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadataagent

    在controller1上操作:

    crm configure

    primitive openstack-neutron-server systemd:neutron-server \
    op start interval=0s timeout=45 \
    .......
    primitive openstack-neutron-dhcp-agent systemd:neutron-dhcp-agent \
    op start interval=0s timeout=45 \
    op stop interval=0s timeout=45 \
    op monitor interval=30 timeout=30
    primitive openstack-neutron-metadata-agent systemd:neutron-metadata-agent \
    op start interval=0s timeout=45 \
    op stop interval=0s timeout=45 \
    op monitor interval=30 timeout=30
    .......
    clone openstack-neutron-metadata-agent-clone openstack-neutron-metadata-agent \
    meta target-role=Started
    commit

  50. 排錯
    如果有服務起不來,對照下面列表cleanup下(視頻裏有詳解)
    crm resource cleanup rabbitmq-server-clone
    crm resource cleanup openstack-memcached-clone
    crm resource cleanup openstack-glance-api-clone
    .......
    Compute節點部署
    一、安裝相關依賴包

    yum install openstack-selinux python-openstackclient yum-plugin-priorities openstack-nova-compute openstack-utils

    ntpdate -y

  51. 配置nova.conf

    >/etc/nova/nova.conf

    openstack-config --set /etc/nova/nova.conf DEFAULT debug False

    openstack-config --set /etc/nova/nova.conf DEFAULT verbose True

    openstack-config --set /etc/nova/nova.conf DEFAULT force_raw_images True

    openstack-config --set /etc/nova/nova.conf DEFAULT remove_unused_original_minimum_age_seconds 86400

    .......

    openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_userid openstack

    openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_password passw0rd

    openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_use_ssl False

    openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_ha_queues True

    openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_retry_interval 1

    openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_retry_backoff 2

    .......

    openstack-config --set /etc/nova/nova.conf libvirt cpu_mode host-model

  52. 在線熱遷移配置
    在線熱遷移需要的前提條件:
    a. 需要有共享存儲,NFS、 Ceph、 GPFS 或者直接連接EMC等存儲設備都可以提供共享存儲。
    b. 源和目標節點的 CPU 類型要一致。
    c. 源和目標節點的 Libvirt 版本要一致。
    d. 源和目標節點能相互識別對方的主機名稱,可以在 /etc/hosts 中加入對方的主機名
    配置方法:
    .......
    b. 配置libvirtd.conf和libvirtd
    sed -i 's/#listen_tls = 0/listen_tls = 0/g' /etc/libvirt/libvirtd.conf
    sed -i 's/#listen_tcp = 1/listen_tcp = 1/g' /etc/libvirt/libvirtd.conf
    .......
    d. 設置libvirtd.service 和openstack-nova-compute.service開機啓動,並且重啓libvirtd &openstack-nova-compute

    systemctl enable libvirtd.service openstack-nova-compute.service

    .......
    e. 熱遷移虛擬機操作
    命令:nova live-migration instance_id node_name

    nova live-migration 990b077d-663c-4a61-bd64-0e5ebeab2554 compute2

    nova show 990b077d-663c-4a61-bd64-0e5ebeab2554 查看是否確實遷移成功

  53. 添加環境變量

    cat <<END >/root/admin-openrc

    export OS_PROJECT_DOMAIN_NAME=default
    export OS_USER_DOMAIN_NAME=default
    export OS_PROJECT_NAME=admin
    export OS_USERNAME=admin
    export OS_PASSWORD=passw0rd
    export OS_AUTH_URL=http://demo.openstack.com:35357/v3
    export OS_IDENTITY_API_VERSION=3
    END

    cat <<END >/root/demo-openrc

    export OS_PROJECT_DOMAIN_NAME=default
    export OS_USER_DOMAIN_NAME=default
    .......

  54. 驗證

    source /root/admin-openrc

    openstack compute service list

    二、安裝Neutron

  55. 安裝相關軟件包

    yum install openstack-neutron-linuxbridge ebtables ipset -y

  56. 配置neutron.conf

    >/etc/neutron/neutron.conf

    sed -i '/^connection/d' /etc/neutron/neutron.conf

    openstack-config --set /etc/neutron/neutron.conf DEFAULT debug False

    openstack-config --set /etc/neutron/neutron.conf DEFAULT verbose True

    openstack-config --set /etc/neutron/neutron.conf DEFAULT rpc_backend rabbit

    .......

  57. 配置/etc/neutron/plugins/ml2/linuxbridge_agent.ini

    openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini linux_bridge physical_interface_mappings

    provider:eno50332184

    openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan enable_vxlan True

    .......
    注意provider後面那個網卡名是第二塊網卡的名稱。

  58. 配置nova.conf

    openstack-config --set /etc/nova/nova.conf neutron url http://demo.openstack.com:9696

    openstack-config --set /etc/nova/nova.conf neutron auth_url http://demo.openstack.com:35357

    openstack-config --set /etc/nova/nova.conf neutron auth_type password

    .......

  59. 重啓和enable相關服務

    systemctl restart libvirtd.service openstack-nova-compute.service

    .......
    三、配置Cinder

  60. 計算節點要是想用cinder,那麼需要配置nova配置文件(注意!這一步是在計算節點操作的)

    openstack-config --set /etc/nova/nova.conf cinder os_region_name RegionOne

    .......

  61. 然後在controller1、2、3上重啓nova服務

    systemctl restart openstack-nova-api.service

    .......
    四. 驗證

    source /root/admin-openrc

    neutron ext-list

    neutron agent-list

    到此,Computer節點搭建完畢,運行nova host-list可以查看新加入的computer1節點
    如果需要再添加另外一個computer節點,只要重複下第二大步即可!記得把計算機名和IP地址改下。_
    OpenStack Mitaka HA高可用搭建

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章