kolla-ansible安裝openstack(rocky)企業級高可用叢集

weillee發表於2019-04-01

一.環境準備

1.hosts設定

每臺裝置兩塊網路卡:

第一塊:NAT模式,用於下載軟體包,設定好IP可以上網

第二塊:橋接模式,用於External網路,用於虛擬機器連線外部網路,不用設定IP

hosts:

host eth0 eth1
deploy 9.110.187.130
controller01 9.110.187.131 不需要IP
controller02 9.110.187.132 不需要IP
compute01 9.110.187.133 不需要IP
compute02 9.110.187.134 不需要IP
storage 9.110.187.135 不需要IP

2.ssh免密登入


ssh-keygen


ssh-copy-id root@controller01
ssh-copy-id root@controller02
ssh-copy-id root@compute01
ssh-copy-id root@compute02
ssh-copy-id root@storage

3.儲存節點配置

  1. 要啟動cinder儲存服務,需先新增一塊新的硬碟,然後建立pv、vg


[root@storage ~]# pvcreate /dev/sdb


[root@storage ~]# vgcreate cinder-volumes /dev/sdb  //vg名取名為 cinder-volumes,這裡主要跟 kolla配置檔案裡vg名一致
  1. 只允許vm例項訪問塊儲存卷,對LVM可能出現異常做設定

vim /etc/lvm/lvm.conf


#修改 devices 下面的,有多少塊硬碟就寫多少塊,如果不想使用系統盤,則不寫a|sda


filter = [ "a|sda|", "a|sdb|", "r|.*|" ]

#重啟lvm服務
systemctl restart lvm2-lvmetad.service

4.配置國內PIP源

所有節點都需要配置


mkdir ~/.pip



cat << EOF > ~/.pip/pip.conf
[global]
index-url =
[install]
trusted-host=pypi.tuna.tsinghua.edu.cn
EOF

5.安裝PIP


#安裝依賴


yum install -y python-devel libffi-devel gcc openssl-devel libselinux-python

#安裝PIP
yum install -y python-pip
pip install --upgrade pip

6.安裝docker

  1. 所有節點都安裝


yum install -y yum-utils device-mapper-persistent-data lvm2


yum-config-manager --add-repo
yum install docker-ce
  1. 配置Docker共享掛載


mkdir /etc/systemd/system/docker.service.d 


tee /etc/systemd/system/docker.service.d/kolla.conf << 'EOF'
[Service]
MountFlags=shared
EOF
  1. 使用阿里加速地址


mkdir -p /etc/docker



systemctl daemon-reload && systemctl enable docker && systemctl restart docker
systemctl status docker

二.部署節點安裝

1.安裝docker模組

pip install docker   //這個其它節點也需要安裝,否則後面會報錯

2.ansible安裝


yum install -y ansible


pip install -U ansible

3.安裝kolla和kolla-ansible

  • Kolla-Ansible 可以從pip安裝,也可以從git安裝,這裡演示從pip安裝

pip install kolla kolla-ansible

錯誤解決方案

  1. Cannot uninstall 'PyYAML'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

解決:強制更新

pip install --ignore-installed PyYAML
  1. 如果出現 requests 2.20.0 has requirement idna<2.8,>=2.5, but you'll have idna 2.4 which is incompatible. 錯誤,則強制更新 requets

pip install --ignore-installed requests
  • 配置kolla-ansible

    1)複製globals.yml 和passwords.yml 到 /etc/kolla 目錄

    cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/
    

    2)複製kolla-ansible的主機清單檔案(all-in-one和multinode)

    
    cp /usr/share/kolla-ansible/ansible/inventory/* /home/
    
    

注:如果是在虛擬機器裡再啟動虛擬機器,那麼需要把virt_type=qemu,預設是kvm


mkdir -p /etc/kolla/config/nova 


cat << EOF > /etc/kolla/config/nova/nova-compute.conf
[libvirt]
virt_type=qemu
cpu_mode = none
EOF

4.生成密碼檔案

kolla-genpwd

修改下面欄位,使用方便的密碼


vim /etc/kolla/passwords.yml


keystone_admin_password: devops

5.修改配置檔案

  1. grep -Ev "^$|^[#;]" /etc/kolla/globals.yml


kolla_base_distro: "centos"


kolla_install_type: "source"
openstack_release: "rocky"
kolla_internal_vip_address: "9.110.187.180"
network_interface: "eth0"
api_interface: "{{ network_interface }}"
neutron_external_interface: "eth1"
neutron_plugin_agent: "openvswitch"
enable_cinder: "yes"
enable_cinder_backend_iscsi: "yes"
enable_cinder_backend_lvm: "no"
enable_haproxy: "yes"
enable_heat: "yes"
glance_enable_rolling_upgrade: "no"
ironic_dnsmasq_dhcp_range:
tempest_image_id:
tempest_flavor_ref_id:
tempest_public_network_id:
tempest_floating_network_name:
  1. 編輯/home/multinode檔案


[control]


controller01
controller02

[network]
controller01
controller02

[inner-compute]

[external-compute]
compute01
compute02

[compute:children]
inner-compute
external-compute

[monitoring]
deploy

[storage]
storage

[deployment]
localhost       ansible_connection=local
........

6.閘道器配置

這裡physnet1是對外網路的名字,在dashboard裡建立供應商網路的名字要和這裡對應

vim /usr/share/kolla-ansible/ansible/roles/neutron/templates/ml2_conf.ini.j2


[ml2_type_vlan]


{% if enable_ironic | bool %}
network_vlan_ranges = physnet1
{% else %}
network_vlan_ranges = physnet1
{% endif %}

三.openstack叢集安裝

1.提前拉取映象

kolla-ansible -i ./multinode pull -vvv

2.確認inventory配置檔案是否正確

ansible -m ping all -i ./multinode

3.Bootstrap服務的依賴安裝

kolla-ansible -i ./multinode bootstrap-servers

4.檢查

kolla-ansible -i ./multinode prechecks

5.部署


kolla-ansible -i ./multinode deploy



注:可以加-vvv,顯示更多

6.使用openstack

  • 生成環境變數和指令碼


kolla-ansible -i ./multinode post-deploy


此時會在/etc/kolla下面生成admin-openrc.sh指令碼,執行一下

至此multinodes部署完成,瀏覽器輸入外網訪問地址: ,即可訪問Openstack的登陸頁面,使用者名稱和密碼都是之前設定的

  • 各節點上服務常用目錄

/etc/kolla    服務配置目錄

/var/lib/docker/volumes/kolla_logs/_data  服務日誌目錄

/var/lib/docker/volumes   服務資料對映的目錄

銷燬openstack

kolla-ansible destroy -i ./multinode  --yes-i-really-really-mean-it



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8686538/viewspace-2639941/,如需轉載,請註明出處,否則將追究法律責任。

相關文章