自動化kolla-ansible部署centos7.9+openstack-train-超融合高可用架構
歡迎加QQ群:1026880196 進行交流學習
環境說明:
1. 滿足一台電腦一個網卡的環境進行模擬測試,由於配置較低,這里只涉及常規測試,不做更深入開展。
2.如果你是物理機,可以准備2個物理網卡,一個作為管理網接口,一個作為浮動網接口(實例上外網的需要,這里需要交換機支持dhcp功能,可以自動獲取ip地址)。
3.根據環境需要注意一下參數修改:
nova_compute_virt_type: "kvm"
vim /etc/kolla/config/nova/nova-compute.conf
[libvirt]
inject_password=true
cpu_mode=host-passthrough
virt_type = kvm
1. PC台式電腦硬件配置
2. 虛擬軟件配置
#虛擬機下載 VMware-workstation-full-16.1.0-17198959.exe 百度網盤: 鏈接:https://pan.baidu.com/s/1RlgNja260HZtRffN_vc9EA 提取碼:2021
3. 節點信息 # 三台融合控制/計算/存儲
node1 CPU:4核 內存:8GB 系統盤SSD 200GB*1 數據盤SSD 300GB*1 管理網:ens33 192.168.1.20/24 浮動網:ens34 dhcp ( BOOTPROTO=dhcp ) node2 CPU:4核 內存:8GB 系統盤SSD 200GB*1 數據盤SSD 300GB*1 管理網:ens33 192.168.1.21/24 浮動網:ens34 dhcp ( BOOTPROTO=dhcp ) node3 CPU:4核 內存:8GB 系統盤SSD 200GB*1 數據盤SSD 300GB*1 管理網:ens33 192.168.1.22/24 浮動網:ens34 dhcp ( BOOTPROTO=dhcp )
4. 系統安裝配置 #鏡像下載 https://mirrors.ustc.edu.cn/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso
1. 系統版本 CentOS-7-x86_64-Minimal-2009.iso(CentOS 7.9 64位) 2. 語言 英文=標准安裝 3. 分區 /boot 1000M /swap 4096M 其余/
5. 網卡信息
6. 系統基本環境 #注意每個節點都要執行
1. 安裝常用軟件包
yum install gcc vim wget net-tools ntpdate git -y
2. 關閉防火牆
systemctl stop firewalld.service
systemctl disable firewalld.service
firewall-cmd --state
3. 關閉selinux
sed -i '/^SELINUX=.*/c SELINUX=disabled' /etc/selinux/config
sed -i 's/^SELINUXTYPE=.*/SELINUXTYPE=disabled/g' /etc/selinux/config
grep --color=auto '^SELINUX' /etc/selinux/config
setenforce 0
4. 主機名:
echo "
192.168.1.20 node1
192.168.1.21 node2
192.168.1.22 node3
">>/etc/hosts
5. ssh免密驗證 #只在node1下操作,其它節點不執行
ssh-keygen
ssh-copy-id root@node1
ssh-copy-id root@node2
ssh-copy-id root@node3
6. 修改ssh
sed -i 's/#ClientAliveInterval 0/ClientAliveInterval 60/g' /etc/ssh/sshd_config
sed -i 's/#ClientAliveCountMax 3/ClientAliveCountMax 60/g' /etc/ssh/sshd_config
systemctl daemon-reload && systemctl restart sshd && systemctl status sshd
7. 使用中國科技大學源
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.ustc.edu.cn/centos|g' \
-i.bak \
/etc/yum.repos.d/CentOS-Base.repo
8. 配置docker源
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
9. 安裝epel源
yum makecache
yum install -y epel-release
10. 使用清華pypi源
mkdir ~/.pip
cat > ~/.pip/pip.conf << EOF
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=pypi.tuna.tsinghua.edu.cn
EOF
11. 安裝安裝python-pip
yum install python-pip -y
pip install --upgrade "pip < 21.0"
pip install pbr
12. 升級系統軟件包
yum update -y
13. 重啟系統
reboot
7. 時間同步 #注意每個節點都要執行
1. 安裝chrony服務 yum -y install chrony 2. 配置chrony文件 cp /etc/chrony.conf{,.bak} echo " server ntp1.aliyun.com iburst server ntp2.aliyun.com iburst server ntp6.aliyun.com iburst stratumweight 0 driftfile /var/lib/chrony/drift rtcsync makestep 10 3 bindcmdaddress 127.0.0.1 bindcmdaddress ::1 keyfile /etc/chrony.keys commandkey 1 generatecommandkey noclientlog logchange 0.5 logdir /var/log/chrony ">/etc/chrony.conf 3. 啟動服務 systemctl enable chronyd && systemctl restart chronyd && systemctl status chronyd 4. chrony同步源 chronyc sources -v ntpdate ntp1.aliyun.com hwclock -w 5. 配置定時任務 crontab -e 0 */1 * * * ntpdate ntp1.aliyun.com > /dev/null 2>&1; /sbin/hwclock -w 0 */1 * * * ntpdate ntp2.aliyun.com > /dev/null 2>&1; /sbin/hwclock -w
8. 安裝配置
# node1下操作 1. 安裝依賴軟件包 yum install python2-devel libffi-devel openssl-devel libselinux-python -y yum remove docker docker-common docker-selinux docker-engine -y yum install yum-utils device-mapper-persistent-data lvm2 -y 2. 安裝ansible yum install -y "ansible < 2.9.19" 3. 配置ansible.cfg文件 sed -i 's/#host_key_checking = False/host_key_checking = True/g' /etc/ansible/ansible.cfg sed -i 's/#pipelining = False/pipelining = True/g' /etc/ansible/ansible.cfg sed -i 's/#forks = 5/forks = 100/g' /etc/ansible/ansible.cfg 4. 安裝 kolla-ansible pip install kolla-ansible==9.3.1 --ignore-installed PyYAML 5. 安裝docker-ce yum install docker-ce -y 6. kolla-ansible配置文件到當前環境 mkdir -p /etc/kolla chown $USER:$USER /etc/kolla cp -r /usr/share/kolla-ansible/etc_examples/kolla/* /etc/kolla cp /usr/share/kolla-ansible/ansible/inventory/* . 7. 修改docker配置文件配置國內阿里雲地址,docker推送地址 mkdir /etc/docker/
cat >> /etc/docker/daemon.json << EOF
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
EOF
8. 開啟 Docker 的共享掛載功能 mkdir -p /etc/systemd/system/docker.service.d cat >> /etc/systemd/system/docker.service.d/kolla.conf << EOF [Service] MountFlags=shared EOF 9. 設置docker服務啟動 systemctl daemon-reload && systemctl enable docker && systemctl restart docker&& systemctl status docker
9. 文件配置
#node1節點下操作
1. 配置清單 vim /root/multinode 修改如下: [control] node1 node2 node3 [network] node1 node2 node3 [compute] node1 node2 node3 [storage] node1 node2 node3 [monitoring] node1
node2
node3 [deployment] node1
node2
node3 2. 配置globals.yml文件,開啟需要的文件 vim /etc/kolla/globals.yml 修改如下: kolla_base_distro: "centos" kolla_install_type: "source" openstack_release: "train" node_custom_config: "/etc/kolla/config" kolla_internal_vip_address: "192.168.1.19" #docker_registry: "xxx123.zixuanyun.com:4000" docker_namespace: "kolla" network_interface: "ens33" neutron_external_interface: "ens34" neutron_plugin_agent: "openvswitch" neutron_tenant_network_types: "vxlan,vlan,flat" keepalived_virtual_router_id: "56" openstack_logging_debug: "True" enable_ceph: "yes" enable_ceph_dashboard: "{{ enable_ceph | bool }}" enable_chrony: "yes" enable_cinder: "yes" enable_cinder_backup: "yes" enable_ceph_dashboard: "{{ enable_ceph | bool }}" enable_heat: "no" enable_neutron_dvr: "yes" enable_neutron_agent_ha: "yes" enable_neutron_provider_networks: "yes" enable_nova_ssh: "yes" glance_backend_ceph: "yes" cinder_backend_ceph: "{{ enable_ceph }}" cinder_backup_driver: "ceph" nova_backend_ceph: "{{ enable_ceph }}" nova_compute_virt_type: "qemu" nova_console: "novnc" 3. 生成隨機密碼 kolla-genpwd 4. 修改界面登陸密碼為123456 sed -i 's/^keystone_admin_password.*/keystone_admin_password: 123456/' /etc/kolla/passwords.yml 5. 准備后端存儲# node1-3都需要執行 #格式化 mkfs.ext4 /dev/sdb 數據盤准備ceph的標簽 parted /dev/sdb -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_BS_FOO1 1 -1 6. 設置nova配置文件 mkdir /etc/kolla/config mkdir /etc/kolla/config/nova cat >> /etc/kolla/config/nova/nova-compute.conf << EOF [libvirt] virt_type = qemu cpu_mode = none EOF 7. 創建虛擬機界面禁止默認創建新卷. mkdir /etc/kolla/config/horizon/ cat >> /etc/kolla/config/horizon/custom_local_settings << EOF LAUNCH_INSTANCE_DEFAULTS = {'create_volume': False,} EOF 8. 創建ceph.conf cat >> /etc/kolla/config/ceph.conf << EOF [global] osd pool default size = 3 osd pool default min size = 2 mon_clock_drift_allowed = 2 osd_pool_default_pg_num = 8 osd_pool_default_pgp_num = 8 mon clock drift warn backoff = 30 EOF
10. 開始安裝
#node1 上執行 1. 引導各節點依賴 kolla-ansible -i ./multinode bootstrap-servers
2. 檢查 ansible -i multinode all -m ping kolla-ansible -i ./multinode prechecks
3. 部署 kolla-ansible -i ./multinode deploy
4. 部署完成后生成rc文件 kolla-ansible -i ./multinode post-deploy
5. 拷貝admin-openrc.sh文件 cp /etc/kolla/admin-openrc.sh ./ chmod +x admin-openrc.sh source admin-openrc.sh 6. 安裝openstack 包 cd /etc/yum.repos.d/ yum install centos-release-openstack-train -y yum makecache fast yum install python-openstackclient -y cd
7. 編輯初始化腳本
vim /usr/share/kolla-ansible/init-runonce
EXT_NET_CIDR=${EXT_NET_CIDR:-'192.168.1.0/24'}
EXT_NET_RANGE=${EXT_NET_RANGE:-'start=192.168.1.200,end=192.168.1.254'}
EXT_NET_GATEWAY=${EXT_NET_GATEWAY:-'192.168.1.1'}
8. 執行#這里需要執行pip install kolla-ansible==9.3.1 --ignore-installed PyYAML 不然報錯依賴
pip install kolla-ansible==9.3.1 --ignore-installed PyYAML
sh /usr/share/kolla-ansible/init-runonce

10. 打開瀏覽器訪問openstack-dashboard控制台
http://192.168.1.19/ admin 123456
11. 鏡像上傳
#node1上執行 1. 鏡像下載 mkdir /root/qcow2 cd /root/qcow2 #百度雲盤 鏈接:https://pan.baidu.com/s/1WK_VbWb-f9boOL2-QahIng 提取碼:2021
#linux 默認22端口 root cloud5566@MM123
#windows 默認56221端口 administrator cloud5566@MM123
#其它鏡像 需要開通會員才能上傳大於4G的文件........... 2. 格式轉換 yum -y install qemu-img qemu-img convert CentOS7.8_x86_64bit.qcow2 CentOS7.8_x86_64bit.raw 3. 鏡像上傳 source /root/admin-openrc.sh openstack image create "CentOS 7.8 64位" --file CentOS7.8_x86_64bit.raw --disk-format raw --container-format bare --property hw_qemu_guest_agent=yes --property os_type=linux --public
4. 查看鏡像是否成功
openstack image list

12. 准備工作

13. 創建實例測試

13. 后端ceph存儲狀態查看
docker exec -it ceph_mon ceph --version
docker exec -it ceph_mon ceph -s
docker exec -it ceph_mon ceph -w
docker exec -it ceph_mon ceph df
docker exec -it ceph_mon ceph osd tree
docker exec -it ceph_mon ceph osd perf

14. 卸載openstack集群環境
1.卸載openstack kolla-ansible destroy -i /root/multinode --include-images --yes-i-really-really-mean-it 2.所有節點重啟系統 reboot 3.所有節點硬盤格式化 dmsetup remove_all mkfs.ext4 /dev/sdb 4.所有節點重新打ceph標簽 parted /dev/sdb -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_BS_FOO1 1 -1
15. 如果集群設備意外關機,導致數據庫集群掛掉。
5. mariadb服務異常 ### 解決辦法 ########## 停止所有mariadb容器 ########## docker stop mariadb ########## 找到最后關閉的mariadb主機,如果不記得就隨機選取一台或者根據/var/lib/docker/volumes/mariadb/_data/grastate.dat的seqno進行選取(越大優先級越高),然后修改其grastate.dat文件的safe_to_bootstrap參數 ########## vim /var/lib/docker/volumes/mariadb/_data/grastate.dat safe_to_bootstrap: 1 ########## 修改mariadb容器啟動命令后啟動容器,查詢日志保證mariadb服務正常啟動 ########## vim /etc/kolla/mariadb/config.json "command": "/usr/bin/mysqld_safe --wsrep-new-cluster", docker start mariadb tail -200f /var/lib/docker/volumes/kolla_logs/_data/mariadb/mariadb.log ########## 啟動其他節點的mariadb容器 ########## docker start mariadb tail -200f /var/lib/docker/volumes/kolla_logs/_data/mariadb/mariadb.log ########## 確保集群運行正常后,恢復最初修改的config.json(這樣就保證集群中所有的mariadb容器都是平等的)########## vim /etc/kolla/mariadb/config.json "command": "/usr/bin/mysqld_safer", tail -200f /var/lib/docker/volumes/kolla_logs/_data/mariadb/mariadb.log 如果一切正常 不需要關閉mariadb docker stop mariadb docker start mariadb tail -200f /var/lib/docker/volumes/kolla_logs/_data/mariadb/mariadb.log
如果報錯

每個節點都要刪除以下2個文件
rm -rf /var/lib/docker/volumes/mariadb/_data/galera.cache
rm -rf /var/lib/docker/volumes/mariadb/_data/grastate.dat