2016年10月22日 星期六

To remove a compute host in OpenStack

Environment:
*OpenStack version: mitaka


請先從Horizon上停用該Compute Host

在Compute Host停止及停用以下的服務
systemctl stop openstack-ceilometer*
systemctl stop neutron*
systemctl stop openstack-nova*

systemctl disable openstack-ceilometer*
systemctl disable neutron*
systemctl disable openstack-nova*


使用OpenStack的cmd來刪除Compute Host(請先載入OpenStack admin環境 source keystonerc_admin)

# 列出compute service的id
openstack compute service list | grep 'nova-compute' | grep '{{compute host}}' | awk '{print $2}'

# 刪除compute service
openstack compute service delete {{service id}}

# 列出neutron agent的id
neutron agent-list | grep '{{compute host}}' | awk '{print $2}'

# 刪除neutron agent
neutron agent-delete {{agent id}}

由於資料庫中還殘存著記錄, 這讓本人覺得非常的不舒服, 於是本人又進了資料庫把以下相關的資料都清除掉

# 清除nova資料庫中與Compute Host有關的記錄
set @compute_host = '{{compute host}}';

DELETE FROM `compute_nodes` WHERE `hypervisor_hostname`=@compute_host;
DELETE FROM `service` WHERE `host`=@compute_host;

# 清除neutron資料庫中與Compute Host有關的記錄
set @compute_host = '{{compute host}}';

DELETE FROM `agents` WHERE `host`=@compute_host;
DELETE FROM `ml2_gre_endpoints` WHERE `host`=@compute_host;
DELETE FROM `ml2_port_binding_levels` WHERE `host`=@compute_host;
DELETE FROM `ml2_port_bindings` WHERE `host`=@compute_host;
DELETE FROM `ml2_vxlan_endpoints` WHERE `host`=@compute_host;

最後記得去所有的機器把有關這台Compute Host的iptables policy清除喔

2016年10月21日 星期五

To add a compute host in OpenStack

Environment:
*OpenStack version: mitaka
*Packstack version: 8.0.0-1.el7


Packstack在安裝Control Host時會建立SSL金鑰及憑証, 但如果安裝時把Control Host排除在外, 這些檔案就不會被複製到Compute Host, 需手動複製到Compute Host, 所以請將以下檔案複製到Compute Host相對的位置
/etc/pki/tls/certs/packstack_cacert.crt
/etc/pki/tls/certs/ssl_amqp_nova.crt
/etc/pki/tls/private/ssl_amqp_nova.key
/etc/pki/tls/certs/ssl_amqp_neutron.crt
/etc/pki/tls/private/ssl_amqp_neutron.key

由於Compute Host在服務啟動時會連接到Control Host, 但我們不會更動Control Host的設定, 會造成服務無法啟動令安裝失敗, 因此請在Control Host准許以下防火牆的規則
INPUT -s {{compute host new}}/32 -p udp -m multiport --dport 4789 -m comment --comment "003 neutron tunnel port incoming" -j ACCEPT
INPUT -s {{compute host new}}/32 -p tcp -m multiport --dport 3260 -m comment --comment "003 cinder incoming" -j ACCEPT
INPUT -s {{compute host new}}/32 -p tcp -m multiport --dport 3306 -m comment --comment "003 mariadb incoming" -j ACCEPT
INPUT -s {{compute host new}}/32 -p tcp -m multiport --dport 5671,5672 -m comment --comment "003 amqp incoming" -j ACCEPT
INPUT -s {{compute host new}}/32 -p tcp -m multiport --dport 27017 -m comment --comment "003 mongodb-server incoming" -j ACCEPT

接著就可以執行Packstack安裝, 請記得把Control Host及其他的Compute Host加入EXCLUDE_SERVERS裡, 否則之前的設定會被洗掉
packstack --answer-file={{answer file}}
*有時packstack在設定網路時不知為何無法停止網路介面, 因而安裝失敗, 此時再重新執行一次安裝就可正常完成安裝
*如果安裝停止很久, 有可能是服務無法正常啟動, 請至compute host new上檢查服務的記錄(/var/log/neutron, /var/log/nova)

為了能讓使用者的Instance正常遷移, 請在Compute Host准許以下防火牆的規則
INPUT -s {{compute host other}}/32 -p tcp -m multiport --dport 16509,49152:59215 -m comment --comment "nova qemu migration incoming" -j ACCEPT
同時在其他的Compute Host准許以下防火牆的規則
INPUT -s {{compute host new}}/32 -p tcp -m multiport --dport 16509,49152:59215 -m comment --comment "nova qemu migration incoming" -j ACCEPT

因為我同時設定Compute Host為Network Host, 請在Compute Host准許以下防火牆的規則
INPUT -s {{compute host other}}/32 -p udp -m multiport --dport 4789 -m comment --comment "003 neutron tunnel port incoming" -j ACCEPT
同時在其他的Compute Host准許以下防火牆規則
INPUT -s {{compute host new}}/32 -p udp -m multiport --dport 4789 -m comment --comment "003 neutron tunnel port incoming" -j ACCEPT