乾貨 | 手把手教你搭建一套OpenStack雲平臺

一個執着於技術的公衆號node


1 前言

今天咱們爲一位朋友搭建一套OpenStack雲平臺。python

咱們使用Kolla部署stein版本的OpenStack雲平臺。linux

kolla是用於自動化部署OpenStack的一個項目,它基於docker和ansible來實現;docker主要負責鏡像製做、容器管理。而ansible主要負責環境的部署和管理。git

2 實驗環境介紹

因爲我我的筆記本性能有限,所以本次實驗採用all-in-one模式部署,即全部服務都部署在一臺主機上。github

其實只要all-in-one模式熟練部署,多節點部署上手很快的web

2.1 系統準備

2.2 邏輯拓撲圖

3 開始部署

3.1 Linux系統環境配置

  1. 主機網卡配置docker

  2. 關閉防火牆、selinux及libvirtd服務json

[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 #重啓生效
  1. 安裝epel源
yum -y install epel-release
  1. CentOS 部分經常使用軟件安裝
yum install -y vim net-tools  bash-completion-extras git

小提問:bash-completion-extras這個安裝包有什麼做用?bootstrap

  1. 配置主機名及hosts文件
[root@qll251 ~]# hostname qll251
[root@qll251 ~]# echo "qll251" > /etc/hostname
[root@qll251 ~]# echo "192.168.1.251 qll251" >> /etc/hosts
  1. 同步時間
[root@qll251 ~]# yum -y install ntp
[root@qll251 ~]# systemctl start ntpd
[root@qll251 ~]# systemctl enable ntpd
  1. 配置 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
  1. 升級pip版本,否則後期安裝會有報警
  1. 安裝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
  1. 指定docker 鏡像加速器
[root@qll251 ~]# vim /etc/docker/daemon.json
添加以下內容:
{
"registry-mirrors": ["https://0i6rnnzu.mirror.aliyuncs.com"]
}
該加速器地址是我在阿里雲上申請的,你們可直接使用
  1. 設置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存儲時,新加磁盤也比較方便vim

  1. 重啓使配置生效
systemctl daemon-reload
systemctl restart docker
systemctl enable docker

3.3 從github 獲取Kolla和Kolla-Ansible

  1. 安裝ansible
yum -y install ansible
  1. 下載kolla及kolla-ansible代碼
git clone https://github.com/openstack/kolla -b stable/stein
git clone https://github.com/openstack/kolla-ansible -b stable/stein
# 若是已有鏡像,只執行第二步便可
  1. 手動安裝kolla-ansible
python ~/kolla-ansible/setup.py install
  1. 安裝kolla-ansible須要依賴包
[root@qll251 ~]# pip install -r /root/kolla-ansible/requirements.txt

若是出現此報錯,咱們強制更新便可;

執行:

[root@qll251 ~]# pip install --ignore-installed PyYAML
  1. 安裝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
  1. 拷貝配置文件
[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各個服務的密碼

  1. 生成隨機密碼
[root@qll251 ~]# kolla-genpwd

使用kolla提供的密碼生成工具自動生成OpenStack各服務的密碼,若是密碼不填充,後面的部署環境檢查時不會經過的。

  1. 修改隨機密碼文件
[root@qll251 ~]# vim /etc/kolla/passwords.yml
# 爲了方便登陸Dashboard,咱們將密碼修改成123123
165 keystone_admin_password: 123123

  1. 修改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
  1. 配置單節點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//

其實若是是單節點部署,這個步驟是可選的。帶你們過一遍配置文件吧

  1. 帶有kolla的引導服務器部署依賴關係
[root@qll251 ~]# kolla-ansible -i /etc/kolla/all-in-one bootstrap-servers

執行結果以下:

  1. 對主機執行預部署檢查
[root@qll251 ~]# kolla-ansible -i /etc/kolla/all-in-one prechecks

執行結果以下:

其實若是能走到這一步,後面的實驗基本就沒啥問題了,加油!

  1. 拉取OpenStack鏡像
[root@qll251 ~]# kolla-ansible -i /etc/kolla/all-in-one  pull

咱們看下它在執行什麼

正在下載OpenStack鏡像,等等哦

聰明的小夥伴會趁它在自動部署過程當中,思考下當命令敲下去之後它都作了哪些操做

  1. 執行OpenStack部署
kolla-ansible -i /etc/kolla/all-in-one  deploy
  1. 驗證部署
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客戶端命令建立一臺測試雲主機。

最後的話

別看我搭建這麼順利呀,真到你部署了,可能會滿屏報錯哦。必定要細心,一不留神就會出現以下狀況:

固然也不要有內心負擔,以上報錯基本都是不細心致使的,好比配置文件中多敲了一個空格或者中英符合複用等。要有信心而且細心哦,相信你能夠的!




  往期精彩  


◆  乾貨 | 給小白的Nginx10分鐘入門指南

◆  什麼是集羣?看完這篇你就知道啦!

◆  乾貨 | Linux平臺搭建網關服務器

◆  乾貨 | 理解正向代理與反向代理的區別

◆  硬核科普服務器硬盤組成與基本原理

◆  一文帶你速懂虛擬化KVM和XEN

◆  實戰 | Hadoo大數據集羣搭建




點擊留言

本文分享自微信公衆號 - 開源Linux(qinlulu_123)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索