一、准備工作
1.准備6台機器(主要是服務分開部署,也可以少於6台,建議至少6台)
| 主機名 | 節點名稱 | 網絡 | 磁盤 |
| contorl | 控制節點 | 網卡1: 網卡名稱:ens33 模式:nat模式 ip:192.168.185.23 作用:和外網通信 網卡2: 網卡名稱:ens34 模式:僅主機模式 ip:10.66.66.23 作用:用作API網絡、VM網絡(tenant 網絡) 網卡3: 網卡名稱:ens35 模式:nat模式 ip:無需ip 作用:用作External 網絡,用於虛擬機連接外部網絡 |
一塊磁盤 |
| network | 網絡節點 | 網卡1: 網卡名稱:ens33 模式:nat模式 ip:192.168.185.24 作用:和外網通信 網卡2: 網卡名稱:ens34 模式:僅主機模式 ip:10.66.66.24 作用:用作API網絡、VM網絡(tenant 網絡) 網卡3: 網卡名稱:ens35 模式:nat模式 ip:無需ip 作用:用作External 網絡,用於虛擬機連接外部網絡 |
一塊磁盤 |
| compute | 計算節點 | 網卡1: 網卡名稱:ens33 模式:nat模式 ip:192.168.185.25 作用:和外網通信 網卡2: 網卡名稱:ens34 模式:僅主機模式 ip:10.66.66.25 作用:用作API網絡、VM網絡(tenant 網絡) 網卡3: 網卡名稱:ens35 模式:nat模式 ip:無需ip 作用:用作External 網絡,用於虛擬機連接外部網絡 |
一塊磁盤 |
| storage | 存儲節點 | 網卡1: 網卡名稱:ens33 模式:nat模式 ip:192.168.185.26 作用:和外網通信 網卡2: 網卡名稱:ens34 模式:僅主機模式 ip:10.66.66.26 作用:用作API網絡、VM網絡(tenant 網絡) 網卡3: 網卡名稱:ens35 模式:nat模式 ip:無需ip 作用:用作External 網絡,用於虛擬機連接外部網絡 |
兩塊磁盤 |
| monitor | 監控節點 | 網卡1: 網卡名稱:ens33 模式:nat模式 ip:192.168.185.27 作用:和外網通信 網卡2: 網卡名稱:ens34 模式:僅主機模式 ip:10.66.66.27 作用:用作API網絡、VM網絡(tenant 網絡) 網卡3: 網卡名稱:ens35 模式:nat模式 ip:無需ip 作用:用作External 網絡,用於虛擬機連接外部網絡 |
一塊磁盤 |
| deploy | 部署節點 | 網卡1: 網卡名稱:ens33 模式:nat模式 ip:192.168.185.28 作用:和外網通信 網卡2: 網卡名稱:ens34 模式:僅主機模式 ip:10.66.66.28 作用:用作API網絡、VM網絡(tenant 網絡) 網卡3: 網卡名稱:ens35 模式:nat模式 ip:無需ip 作用:用作External 網絡,用於虛擬機連接外部網絡 |
一塊磁盤 |
2.存儲節點
要啟動cinder存儲服務,需對第二個磁盤做如下處理
pvcreate /dev/sdb vgcreate cinder-volumes /dev/sdb #vg名取名為 cinder-volumes,這里主要跟 kolla配置文件里vg名一致
3.所有節點關閉selnux
# 臨時關閉,不需要重啟,但是重啟失效 setenforce 0 # 永久關閉需要重啟才能生效 sed -i 's/SELINUX=.*/SELINUX=Disabled/g' /etc/selinux/config # 重啟 reboot # 查看selnux狀態 getenforce
4.所有節點關閉防火牆
systemctl stop firewalld systemctl disable firewalld
5.所有節點設置主機名,按照上面表格里的命名,也可以是其他名稱,建議這樣命名,方便區分
hostnamectl set-hostname 主機名稱
6.所有節點配置/etc/hosts
cat >> /etc/hosts << EOF 192.168.185.23 control 192.168.185.24 network 192.168.185.25 compute 192.168.185.26 storage 192.168.185.27 monitor 192.168.185.28 deploy EOF
7.部署節點做到其他節點的免密
# 生成公有密鑰和私有密碼,一直默認即可 ssh-keygen -t rsa # 分發共有密鑰到其他節點 ssh-copy-id -i ~/.ssh/id_rsa.pub 節點名稱 # 沒有上一步的映射,這里寫ip即可,建議配置上面的映射方便一些
8.所有節點安裝docker
yum update -y && yum upgrade -y
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io -y
# 配置國內源
mkdir -p /etc/docker
cat >> /etc/docker/daemon.json << EOF
{
"registry-mirrors" : [
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com",
"https://cr.console.aliyun.com/"
]
}
EOF
systemctl restart docker
9.所有節點設置數據包轉發
echo " net.ipv4.ip_forward = 1 ">> /etc/sysctl.conf&&sysctl -p
10.所有節點安裝並升級pip
# 方式1: yum install -y epel-release # python2 yum install -y python-pip pip install -U pip # python3 yum install -y python3-pip pip3 install -U pip # 方式2: # python2 curl -o get-pip.py https://bootstrap.pypa.io/pip/2.7/get-pip.py python2 get-pip.py # python3 curl -o get-pip.py https://bootstrap.pypa.io/get-pip.py python3 get-pip.py
11.部署節點安裝ansible和kolla-ansible
yum install -y python-devel libffi-devel gcc openssl-devel libselinux-python pip install -U ansible -i http://mirrors.aliyun.com/pypi/simple/ pip install kolla-ansible==9.1.0 --ignore-installed PyYAML -i http://mirrors.aliyun.com/pypi/simple/
12.部署節點優化ansible配置(可以不做)
vim /etc/ansible/ansible.cfg forks = 10 # 第19行,設置並行進程數。如果要管理的主機很多,可以優先嘗試增加該值 host_key_checking = False /# 第67行,跳過ssh首次連接提示驗證部分 pipelining = True # 第403行,開啟管道輸送。ansible在執行一個模塊需要ssh到目的主機多次,開啟該模式減少ssh連接次數,縮短ansible執行時間。 # 在部署大規模服務器或引用模塊非常多時,開啟pipelining會給ansible帶來顯著的性能提升
13. 部署節點復制kolla-ansible的一些配置
cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/ cp /usr/share/kolla-ansible/ansible/inventory/* .
14.部署節點自動生成OpenStack各服務的密碼文件
kolla-genpwd # 修改網頁登錄密碼 vim /etc/kolla/passwords.yml keystone_admin_password: admin # 第165行
15. 部署節點修改kolla-ansible的全局配置(/etc/kolla/global.yml),以下是我的示例,大家根據自己的情況改
# 選擇下載的基礎鏡像 kolla_base_distro: "centos" # 選擇的安裝方法:binary二進制安裝,source源碼安裝 kolla_install_type: "source" # 選擇OpenStack的版本標簽,詳細請看:https://releases.openstack.org/ openstack_release: "train" # OpenStack內部管理網絡地址,通過該IP訪問OpenStack Web頁面進行管理。如果啟用了高可用,需要設置為VIP(漂移IP) kolla_internal_vip_address: "192.168.185.20" # OpenStack外部管理網絡地址 kolla_external_vip_address: "10.66.66.20" # docker 命名空間 docker_namespace: "kolla" # OpenStack內部管理網絡地址的網卡接口 network_interface: "ens33" # OpenStack外部(或公共)網絡的網卡接口,可以是vlan模式或flat模式,此網卡應該在沒有IP地址的情況下處於活動,如果不是,那么OpenStack雲平台中的雲主機實例將無法訪問外部網絡。(存在IP時br-ex橋接就不成功) neutron_external_interface: "ens34" # neutron網絡服務插件 neutron_plugin_agent: "openvswitch" # 啟用cinder(塊存儲) enable_cinder: "yes" # cinder(塊存儲)后端啟用lvm enable_cinder_backend_lvm: "yes" # 開啟web界面 enable_horizon: "yes" # 開啟neutron網絡服務 enable_neutron_provider_networks: "yes"
16. 部署節點配置multinode多節點主機清單文件
[control] control [network] network [compute] compute [monitoring] monitor [storage] storage [deployment] localhost ansible_connection=local
17.部署節點檢測所有主機是否正常通信
ansible -i ~/multinode all -m ping
二、開始部署openstack9(只在部署節點執行)
1. 通過kolla-ansible安裝OpenStack所需依賴包
kolla-ansible -i ~/multinode bootstrap-servers
2.對主機進行預部署檢查
kolla-ansible -i ~/multinode prechecks
3.拉取OpenStack的鏡像
kolla-ansible -i ~/multinode pull
4.部署OpenStack
kolla-ansible -i ~/multinode deploy
5.驗證部署
kolla-ansible -i ~/multinode post-deploy
6.查看部署后的一些配置信息
. /etc/kolla/admin-openrc.sh
cat /etc/kolla/admin-openrc.sh

7.查看web界面

8.安裝openstack命令客戶端
pip install python-openstackclient python-glanceclient python-neutronclient --ignore-installed
9.openstack命令測試
# 虛擬化類型列表 openstack hypervisor list # 鏡像列表 openstack image list # nova服務列表 nova service-list

