1 前言
今天我們為一位朋友搭建一套OpenStack雲平台。
我們使用Kolla部署stein版本的OpenStack雲平台。
kolla是用於自動化部署OpenStack的一個項目,它基於docker和ansible來實現;docker主要負責鏡像制作、容器管理。而ansible主要負責環境的部署和管理。
2 實驗環境介紹
由於我個人筆記本性能有限,因此本次實驗采用all-in-one模式部署,即所有服務都部署在一台主機上。
其實只要all-in-one模式熟練部署,多節點部署上手很快的
2.1 系統准備
2.2 邏輯拓撲圖
3 開始部署
3.1 Linux系統環境配置
1)主機網卡配置
2)關閉防火牆、selinux及libvirtd服務
[root@qll251 ~]# systemctl stop firewalld
[root@qll251 ~]# systemctl disable firewalld
[root@qll251 ~]# vim /etc/selinux/config
改:SELINUX=enforcing
為:SELINUX=disabled
[root@qll251 ~]# systemctl stop libvirtd.service
[root@qll251 ~]# systemctl disable libvirtd.service
[root@qll251 ~]# reboot #重啟生效
3)安裝epel源
yum -y install epel-release
4)CentOS 部分常用軟件安裝
yum install -y vim net-tools bash-completion-extras git
小提問:bash-completion-extras這個安裝包有什么作用?
5)配置主機名及hosts文件
[root@qll251 ~]# hostname qll251
[root@qll251 ~]# echo "qll251" > /etc/hostname
[root@qll251 ~]# echo "192.168.1.251 qll251" >> /etc/hosts
6)同步時間
[root@qll251 ~]# yum -y install ntp
[root@qll251 ~]# systemctl start ntpd
[root@qll251 ~]# systemctl enable ntpd
7)配置 pip 鏡像源,方便快速下載python庫
[root@qll251 ~]# mkdir ~/.pip
[root@qll251 ~]# vim ~/.pip/pip.conf
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
3.2 安裝基礎包和docker服務
1)安裝基礎包
yum -y install python-devel libffi-devel gcc openssl-devel python-pip
2)升級pip版本,不然后期安裝會有報警
3)安裝docker-ce
- 安裝依賴包
yum -y install yum-utils device-mapper-persistent-data lvm2
- 添加docker-ce yum源文件
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安裝docker-ce
yum -y install docker-ce
- 啟動docker服務
systemctl start docker
systemctl enable docker
4)指定docker 鏡像加速器
[root@qll251 ~]# vim /etc/docker/daemon.json
添加如下內容:
{
"registry-mirrors": ["https://0i6rnnzu.mirror.aliyuncs.com"]
}
該加速器地址是我在阿里雲上申請的,大家可直接使用
5)設置docker volume卷掛載方式
[root@qll251 ~]# mkdir /etc/systemd/system/docker.service.d
[root@qll251 ~]# vim /etc/systemd/system/docker.service.d/kolla.conf
# 添加如下內容
[Service]
MountFlags=shared
解釋一下:MountFlags=shared,表示當宿主機新增分區時,docker服務無需重啟即可識別。添加此參數后期OpenStack中使用cinder存儲時,新加磁盤也比較方便
6)重啟使配置生效
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
3.3 從github 獲取Kolla和Kolla-Ansible
1)安裝ansible
yum -y install ansible
2)下載kolla及kolla-ansible代碼
git clone https://github.com/openstack/kolla -b stable/stein
git clone https://github.com/openstack/kolla-ansible -b stable/stein
# 如果已有鏡像,只執行第二步即可
3)手動安裝kolla-ansible
python ~/kolla-ansible/setup.py install
4)安裝kolla-ansible需要依賴包
[root@qll251 ~]# pip install -r /root/kolla-ansible/requirements.txt
如果出現此報錯,我們強制更新即可;
執行:
[root@qll251 ~]# pip install --ignore-installed PyYAML
5)安裝kolla需要依賴包
[root@qll251 ~]# pip install -r /root/kolla/requirements.txt
注意:如果出現類似如下錯誤:
requests 2.20.0 has requirement idna<2.8,>=2.5, but you'll have idna 2.4 which is incompatible
同樣,強制更新requets庫即可;
[root@qll251 ~]# pip install --ignore-installed requests
6)拷貝配置文件
[root@qll251 ~]# cd ~/kolla-ansible/
[root@qll251 kolla-ansible]# cp -r ./etc/kolla/* /etc/kolla/
[root@qll251 kolla-ansible]# cp ./ansible/inventory/* /etc/kolla/
#看下我們都拷貝了哪些文件
[root@qll251 ~]# ls /etc/kolla/
all-in-one globals.yml multinode passwords.yml
[root@qll251 ~]#
配置文件解釋:
-
all-in-one #安裝單節點OpenStack的ansible自動安裝配置文件
-
multinode # 安裝多節點OpenStack的ansible自動安裝配置文件
-
globals.yml # 部署OpenStack的自定義配置文件
-
passwords.yml #存放OpenStack各個服務的密碼
6)生成隨機密碼
[root@qll251 ~]# kolla-genpwd
使用kolla提供的密碼生成工具自動生成OpenStack各服務的密碼,如果密碼不填充,后面的部署環境檢查時不會通過的。
7)修改隨機密碼文件
# 為了方便登錄Dashboard,我們將密碼修改為123123
[root@qll251 ~]# vim /etc/kolla/passwords.yml
165 keystone_admin_password: 123123
8)修改globals.yml配置文件
[root@qll251 ~]# vim /etc/kolla/globals.yml
# 指定鏡像的系統版本
15 kolla_base_distro: "centos"
# 指定安裝方式
18 kolla_install_type: "binary"
# 指定安裝stein版本的OpenStack
21 openstack_release: "stein"
# 本次實驗采用all-in-one模式,未啟用高可用。填寫宿主機IP即可
31 kolla_internal_vip_address: "192.168.1.251"
# OpenStack內部管理網絡
89 network_interface: "eth0"
# Neutron外網網絡
107 neutron_external_interface: "eth1"
# 本次實驗采用all-in-one模式,未啟用高可用
192 enable_haproxy: "no"
3.4 開始部署OpenStack
1)生成SSH Key,並授信本節點
ssh-keygen
ssh-copy-id root@192.168.1.251
2)配置單節點all-in-one配置文件
[root@qll251 ~]# vim /etc/kolla/all-in-one
# 將文件中所有的localhost替換成qll251
:1,$s/localhost/qll251/
# 去掉文件中所有包含“ansible_connection=local”
:1,$s/ansible_connection=local//
其實如果是單節點部署,這個步驟是可選的。帶大家過一遍配置文件吧
3)帶有kolla的引導服務器部署依賴關系
[root@qll251 ~]# kolla-ansible -i /etc/kolla/all-in-one bootstrap-servers
執行結果如下:
4)對主機執行預部署檢查
[root@qll251 ~]# kolla-ansible -i /etc/kolla/all-in-one prechecks
執行結果如下:
其實如果能走到這一步,后面的實驗基本就沒啥問題了,加油!
5)拉取OpenStack鏡像
[root@qll251 ~]# kolla-ansible -i /etc/kolla/all-in-one pull
我們看下它在執行什么
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-FkBFhzT0-1587031174141)(https://imgkr.cn-bj.ufileos.com/8b766bc2-2152-4ce3-80b8-4f1184854628.png)]
正在下載OpenStack鏡像,等等哦
聰明的小伙伴會趁它在自動部署過程中,思考下當命令敲下去以后它都做了哪些操作
6)執行OpenStack部署
kolla-ansible -i /etc/kolla/all-in-one deploy
7)驗證部署
kolla-ansible -i /etc/kolla/all-in-one post-deploy
執行結果如下,則說明您的OpenStack環境已部署成功!Congratulations!
同時也生成了admin用戶的憑證, 即/etc/kolla/admin-openrc.sh文件
我們看下該憑證:
4 登錄OpenStack雲平台
在瀏覽器中輸入:http://192.168.1.251
用戶名:admin
密碼:123123
登錄密碼我們在passwords.ym中指定為123123,在實際生產環境中可不能設置這么簡單哦。
到此已完成OpenStack雲平台的部署,明天我們再來討論下OpenStack 雲平台基本使用方法及利用OpenStack客戶端命令創建一台測試雲主機。
最后的話
別看我搭建這么順利呀,真到你部署了,可能會滿屏報錯哦。一定要細心,一不留神就會出現如下情況:
當然也不要有心里負擔,以上報錯基本都是不細心導致的,比如配置文件中多敲了一個空格或者中英符合復用等。要有信心並且細心哦,相信你可以的!
歡迎關注微信公眾號『開源Linux』,專注於分享Linux/Unix相關內容,包括Linux運維、Linux系統開發、網絡編程、以及虛擬化和雲計算等技術干貨。后台回復『學習』,送你一套學習Linux的系列書籍,期待與你相遇。