kolla-ansible部署單節點OpenStack-Pike


kolla-ansible部署單節點OpenStack-Pike

一、准備工作

最小化安裝CentOS 7.5,裝完后,進行初始化

selinux,防火牆端口無法訪問,主機名問題,都是安裝的常見錯誤,一定要細心確認。

 

kolla的安裝,要求目標機器是兩塊網卡:

  1. ens33,設置的IP是:192.168.41.13,之后Horizon訪問就是通過這個IP地址;
  2. ens37,不分配IP,這個是讓neutron的br-ex 綁定使用,虛擬機是通過這塊網卡訪問外網。
  3. ens38 選擇nat網絡,主要用於安裝時連接外網下載包等

 

hosts綁定(/etc/hosts)

192.168.41.13  kolla

 

除系統外盤,再添加一塊硬盤,用於存在,創建卷。

要啟動cinder存儲服務,需先添加一塊新的硬盤,然后創建pv、vg
pvcreate /dev/sdb
vgcreate cinder-volumes /dev/sdb     #vg名取名為 cinder-volumes,這里主要跟 kolla配置文件里vg名一致


只允許vm實例訪問塊存儲卷,對LVM可能出現異常做設置


vi /etc/lvm/lvm.conf 
修改 devices 下面的,有多少塊硬盤就寫多少塊,如果不想使用系統盤,則不寫a|sda

devices {
...

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

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

 

配置國內pipy源

mkdir ~/.pip

cat << EOF > ~/.pip/pip.conf

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
[install]
trusted-host=pypi.tuna.tsinghua.edu.cn

EOF

 

安裝pip

yum -y install epel-release

yum -y install python-pip

如果pip install 出現問題可以試試命令

pip install setuptools==33.1.1

 

二、安裝基礎包

 

一定要先啟用EPEL的repo源
yum -y install python-devel libffi-devel gcc openssl-devel git python-pip qemu-kvm qemu-img

安裝docker
1)下載RPM包
2)安裝Docker 1.12.6,創建安裝1.12.6比較穩定
yum localinstall -y docker-engine-1.12.6-1.el7.centos.x86_64.rpm docker-engine-selinux-1.12.6-1.el7.centos.noarch.rpm

也可以參考官方文檔安裝:

https://docs.docker.com/engine/installation/linux/centos/

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

yum install docker-ce #或 yum install docker-ce-1.12.6

 

配置Docker共享掛載
mkdir /etc/systemd/system/docker.service.d 
tee /etc/systemd/system/docker.service.d/kolla.conf << 'EOF' 
[Service] 
MountFlags=shared 
EOF

設置訪問私有的Docker倉庫

公共的:https://hub.docker.com/u/kolla/,但下載比較慢
編輯  vim /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd --insecure-registry 192.168.41.13:4000
重啟服務
systemctl daemon-reload && systemctl enable docker && systemctl restart docker

 

下載kolla官方提供的鏡像
wget     原來官方的下載地址http://tarballs.openstack.org/kolla/images/centos-source-registry-pike.tar.gz已經轉到到https://hub.docker.com/u/kolla/,4G左右

mkdir -p /data/registry
tar -zxvf  centos-source-registry-pike-5.0.1.tar.gz -C /data/registry
這樣就把kolla的docker鏡像文件放到Regisitry服務器上。

 

Registry 服務器
默認docker的registry是使用5000端口,對於OpenStack來說,有端口沖突,所以改成4000
docker run -d -v /data/registry:/var/lib/registry -p 4000:5000 --restart=always --name registry registry



測試是否成功:

# curl -k localhost:4000/v2/_catalog
# curl -k localhost:4000/v2/lokolla/centos-source-fluentd/tags/list {"name":"lokolla/centos-source-fluentd","tags":["5.0.1"]}

Ansible
Kolla項目的Mitaka版本要求ansible版本低於2.0,Newton版本以后的就只支持2.x以上的版本。
yum install -y ansible

三、安裝kolla

 

升級pip:
pip install -U pip -i https://pypi.tuna.tsinghua.edu.cn/simple
安裝docker模塊:pip install docker

 

安裝kolla-ansible 
cd /home
git clone -b stable/pike https://github.com/openstack/kolla-ansible.git
cd kolla-ansible
pip install . -i https://pypi.tuna.tsinghua.edu.cn/simple


復制相關文件
cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/kolla/ 
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

生成密碼文件
kolla-genpwd
編輯 vim /etc/kolla/passwords.yml
keystone_admin_password: admin123
這是登錄Dashboard,admin使用的密碼,根據需要進行修改。

編輯 vim /etc/kolla/globals.yml  文件

kolla_internal_vip_address: "192.168.41.13" //外部訪問地址,如果是非HA環境,是控制節點IP 
docker_registry: "192.168.41.13:4000"    //鏡像庫,用部署節點的鏡像庫 ,這里與前面配docker服務啟動腳本配置的IP一樣,如果使用主機名,這里也要使用主機名
docker_namespace: "lokolla"
kolla_install_type: "source"
openstack_release: "5.0.1" 
network_interface: "ens33" //網絡接口,默認就這一個接口,這里以ens33作為API網絡 
api_interface: "{{ network_interface }}" //用的是ens33 
neutron_external_interface: "ens37" //ens37作為外部網絡

enable_cinder: "yes" //啟用cinder 
enable_cinder_backend_iscsi: "yes"
enable_cinder_backend_lvm: "yes" //cinder后端用lvm

enable_haproxy: "no" //不啟用haproxy
enable_heat: "no"

 

#默認創建外部網絡的物理網絡是physnet1

四、安裝openstack

 

安裝OpenStack
檢查:kolla-ansible prechecks -i /home/all-in-one
部署:kolla-ansible deploy -i /home/all-in-one

驗證部署
kolla-ansible post-deploy
這樣就創建 /etc/kolla/admin-openrc.sh 文件

. /etc/kolla/admin-openrc.sh


安裝OpenStack client端
pip install --ignore-installed python-openstackclient

 

部署經驗

(1)如果,在部署過程中失敗了,亦或是變更了配置信息,需要重新部署,則執行如下命令,清除掉已部署的 Docker 容器,即 OpenStack 服務。

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

接着,umount 卸掉 Ceph OSD 掛載的目錄,如 /dev/sdb1。

umount /dev/sdb1

刪除掉 /var/lib/ceph 目錄下的 OSD 文件:

rm -rf /var/lib/ceph/osd/*

刪除掉 OSD 盤的分區,如 /dev/sdb:

parted /dev/sdb rm 1 rm 2

重新對 OSD 盤進行分區,如 /dev/sdb:

parted /dev/sdb -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_1 1 -1

最后,執行部署命令即可。

(2)除此外,還有一些小工具,在需要時,可以使用。

  • kolla-ansible prechecks:在執行部署命令之前,先檢查環境是否正確;
  • tools/cleanup-containers:可用於從系統中移除部署的容器;
  • tools/cleanup-host:可用於移除由於網絡變化引發的 Docker 啟動的neutron-agents 主機;
  • tools/cleanup-images:可用於從本地緩存中移除所有的 Docker image。

最后,可以使用 docker ps -a 命令查看到安裝的 OpenStack 所有服務的容器。

故障診斷與排除

通過 Kolla 和 Ansible 部署或運行 OpenStack 環境時,如果出現問題,通常可以使用如下一些方法來排查/解決。

(1)查看指定容器(即指定的服務)的輸出日志信息。

docker logs container_name

(2)進入到 fluentd 日志收集容器里,查看指定服務的日志。

docker exec -it fluentd bash

接着,CD 到 /var/log/kolla/SERVICE_NAME 目錄下。

(3)還可以,直接 CD 到主機的 /var/lib/docker/volumes/kollalogs/data/ 目錄下,查看指定服務的日志信息。

(4)一些 Ceph的管理命令,如下:

  • docker exec -it ceph_mon ceph osd pool ls
  • docker exec -it ceph_mon ceph -s
  • docker exec -it ceph_mon rbd ls images
  • docker exec -it ceph_mon rbd ls volumes
  • docker exec -it ceph_mon rbd ls vms

當然,也可以直接進入到 Ceph 容器中,直接執行相關命令,如下所示。

# docker exec -it -u root ceph_mon bash

查看OSD狀態和Ceph集群狀態:

ceph osd tree
ceph health
ceph -s

查看 Ceph 的實時運行狀態:

ceph -w

查看 Ceph 存儲空間:

ceph df
ceph osd df

查看 Ceph 集群monitor信息:

ceph mon statceph osd dump |grep pool

要檢查監視器的法定人數狀態,執行下面的命令:

ceph quorum_status

查看OSD Journal分區大小:

ceph --show-config|grep osd_journal_size
























1. 准備工作

1.1環境准備

物理機一台、CentOS7、雙網卡(第一張為管理網絡,可以訪問公網,第二張為實例使用網絡,啟動即可,無需配置IP。)

這里注意的是,docker安裝目錄在/var,分區的時候要注意,或者軟鏈接到新目錄

1.2 關閉selinux

 
1
vi /etc/selinux/config

更改SELINUX選項為不可用

 
1
SELINUX=disabled

1.3 關閉防火牆(可選)

 
1
2
3
4
5
systemctl stop firewalld
 
systemctl disable firewalld
 
# 因為是測試環境,所以關掉了防火牆

1.4 更改hosts

 
1
2
3
192.168 . 134.131 kolla
 
# centos 默認主機名localhost如果更改,統一即可

2.安裝docker容器

使用官方腳本一鍵安裝

 
1
curl -fsSL https: //get.docker.com | bash -s docker --mirror Aliyun

也可以使用國內 daocloud 一鍵安裝命令:

 
1
curl -sSL https: //get.daocloud.io/docker | sh

手動安裝請參考:
https://www.runoob.com/docker/centos-docker-install.html

測試docker是夠正常運行:

 
1
sudo docker run hello-world

3.安裝依賴

 
1
2
3
yum install epel-release
yum install python-pip
pip install -U pip
 
1
yum install python-devel libffi-devel gcc openssl-devel libselinux-python
 
1
yum install ansible

配置ansible:
添加至 /etc/ansible/ansible.cfg

 
1
2
3
4
[defaults]
host_key_checking=False
pipelining=True
forks= 100

4. 安裝Kolla-ansible

 
1
pip install kolla-ansible

提示有安裝包無法安裝,使用pip install --ignore-installed 命令強制執行

復制kolla-ansible配置文件:

 
1
cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/kolla/
 
1
cp /usr/share/kolla-ansible/ansible/inventory/* .

5. 安裝Kolla

從git克隆Kolla和Kolla Ansible存儲庫。

 
1
2
git clone https: //github.com/openstack/kolla
git clone https: //github.com/openstack/kolla-ansible

將配置文件復制到/etc/kolla目錄。

 
1
cp -r kolla-ansible/etc/kolla /etc/kolla/
 
1
cp kolla-ansible/ansible/inventory/* .

6. 配置OpenStack環境

6.1 調整kolla-ansible全局配置

 
1
2
3
4
5
6
7
8
kolla_install_type:  "source" # 使用源碼版本,更穩定
openstack_release:  "train"
  # 指定queens版本kolla_internal_vip_address:  "192.168.134.131" # all-in-one部署,指定vip為管理網絡網卡
network_interface:  "ens33" # 管理網絡、API網絡的網卡
 
neutron_external_interface:  "ens34" # 外部網絡的網卡
 
enable_haproxy:  "no" # all-in-one部署,不部署HA服務

6.2 調整 all-in-one 配置

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[control]
kolla       ansible_connection=local
 
[network]
kolla       ansible_connection=local
 
[compute]
kolla       ansible_connection=local
 
[storage]
kolla       ansible_connection=local
 
[monitoring]
kolla       ansible_connection=local

全部改為之前修改的主機名

7.生成密碼

 
1
kolla-genpwd
 
1
2
3
4
5
# 生成的文件在/etc/kolla/password.yml
 
vi /etc/kolla/password.yml
 
keystone_admin_password:  123 #OpenStack登錄密碼,原始密碼哈希生成,記憶王者可以隨意修改

8. 部署OpenStack環境

 
1
kolla-ansible -i ./all-in-one bootstrap-servers
 
1
kolla-ansible -i ./all-in-one prechecks
 
1
kolla-ansible -i ./all-in-one deploy

9. 使用openstack

OpenStack需要一個openrc文件,其中設置了管理員用戶等的憑據。生成此文件運行

 
1
2
kolla-ansible post-deploy
. /etc/kolla/admin-openrc.sh

安裝基本OpenStack CLI客戶端:

 
1
pip install python-openstackclient python-glanceclient python-neutronclient

根據安裝Kolla Ansible的方式,有一個腳本可以創建示例網絡、圖像等。

 
 
 
1
. /usr/share/kolla-ansible/init-runonce
 
























kolla-ansible單節點部署OpenStack過程,遵循all-in-one模式部署,其部署過程中可以有效的進行配置文件和日志文件的集中規划。

部署經過了虛擬機測試和物理機測試皆可用,本文就以物理機作為個例進行部署分解。

物理機配置清單:

CPU4個邏輯核    勾選“虛擬化 Intel VT-x/EPT”

網卡ens33接NAT網絡,IP 192.168.134.131,用於下載組件、管理網絡、API網絡

網卡ens34橋接物理機網卡,IP 10.25.21.177,用於外部網絡(即內網環境)

操作系統CentOS 7.5

 


下面進入系統環境配置

在裝系統的過程中,目錄分區的過程中默認/root/ 50GB,后期測試會嚴重不足,所以在系統安裝的時候需要對/root目錄的容量進行規划。

完成之后,進入centos對系統進行初始化設定:

1.關閉selinux

vi /etc/selinux/config 

更改SELINUX選項為不可用

SELINUX=disabled

2.關閉防火牆

systemctl stop firewalld

systemctl disable firewalld 

# 以為是測試環境,所以關掉了防火牆

3.更改hosts

192.168.134.131 localhost 

# centos 默認主機名localhost如果更改,統一即可

二、安裝docker容器

1.查詢一下防火牆是否關閉

systemctl status firewalld

# 顯示disable即為關閉,同時查看selinux=disable修改完畢

2.下載安裝基本工具

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

3.安裝docker

# 安裝docker官方yum源

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 下載安裝docker

sudo yum install -y docker-ce  

# 啟用docker服務

sudo systemctl start docker  

# 設置開機自啟docker服務

sudo systemctl enable docker

4.測試docker是夠正常運行

sudo docker run hello-world

從官方源下載hello-world鏡像並啟動容器,輸出

 
 

三、配置docker容器

1.開啟共享掛載

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

tee /etc/systemd/system/docker.service.d/kolla.conf << 'EOF'

[Service]

MountFlags=shared

EOF

重啟docker服務,使生效

systemctl daemon-reload

systemctl restart docker

四、安裝kolla-ansible

1.下載安裝基本工具

yum install -y epel-release

yum install -y python-pip

pip install -U pip

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

yum install -y ansible

2.下載kolla、kolla-ansible

git clone https://github.com/openstack/kolla

git clone https://github.com/openstack/kolla-ansible

3.切換到queens版本

cd kolla

git checkout -b queens remotes/origin/stable/queens  

cd ../kolla-ansible

git checkout -b queens remotes/origin/stable/queens

4.安裝kolla-ansible

# 先預裝版本不匹配的包

pip install -U idna

pip install -I PyYAML  

# 安裝kolla-ansible

cd kolla-ansible

pip install .

5.配置kolla-ansible

vi /etc/ansible/ansible.cfg

修改一下選項

[defaults]

host_key_checking=False

pipelining=True

forks=100

五、配置OpenStack環境

1、復制kolla-ansible配置文件

cp -r kolla-ansible/etc/kolla /etc/kolla/

cp kolla-ansible/ansible/inventory/* .

正常部署來說,kolla-ansible的方式部署OpenStack所包含的配置文件存儲路徑是在/etc/kolla/文件目錄下。OpenStack的服務容器啟動時,會將此目錄映射到容器里。

2.調整kolla-ansible全局配置

vi /etc/kolla/globals.yml

更改如下

kolla_install_type: "source" # 使用源碼版本,更穩定openstack_release: "queens"

 # 指定queens版本kolla_internal_vip_address: "192.168.134.131" # all-in-one部署,指定vip為管理網絡網卡

docker_registry: "kolla:4000" # ----僅使用docker離線源時配置

docker_namespace: "kolla" # ----僅使用docker離線源時配置

network_interface: "ens33" # 管理網絡、API網絡的網卡

neutron_external_interface: "ens34" # 外部網絡的網卡

enable_haproxy: "no" # all-in-one部署,不部署HA服務

nova_compute_virt_type: "kvm" # ---- 在物理機上部署時無需設置(默認kvm) ,僅在虛擬機中部署kolla-ansible-openstack時設置qemu

注意:在版本上,流傳很多對下載鏡像進行加速的,基本上都是阿里雲,有時候有效有時候無效,看個人喜好。

[root@localhost ~]# mkdir -p /etc/docker

[root@localhost ~]# vim /etc/docker/daemon.json { "registry-mirrors": ["https://7g5a4z30.mirror.aliyuncs.com"] }

# 國內鏡像加速依據個人喜好

3、生成密碼

kolla-genpwd

# 生成的文件在/etc/kolla/password.yml

vi /etc/kolla/password.yml

keystone_admin_password: 123 #OpenStack登錄密碼,原始密碼哈希生成,記憶王者可以隨意修改

六、部署OpenStack環境

1.檢查

kolla-ansible -i /home/all-in-one prechecks #注意一下你的all-in-one 文件目錄

2.部署安裝

kolla-ansible -i /home/all-in-one -vvv deploy #開啟詳情檢查方式,方便與部署過程中的排查

3.生成運行腳本

kolla-ansible post-deploy

運行腳本

source /etc/kolla/admin-openrc.sh

4.安裝OpenStack命令行工具

# 先安裝版本不匹配的組件

pip install -I ipaddress  

# 安裝命令行工具

pip install python-openstackclient python-glanceclient python-neutronclient

5.初始化OpenStack環境

vi /usr/share/kolla-ansible/init-runonce # 對於OpenStack的網絡資源規划要進行修改

修改如下:

# This EXT_NET_CIDR is your public network,that you want to connect to the internet via.

EXT_NET_CIDR='192.168.1.0/24'

EXT_NET_RANGE='start=192.168.134.150,end=192.16.134.199'

EXT_NET_GATEWAY='192.168.1.1'




 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Kola簡介:

kolla項目起源於TripleO項目,聚焦於使用Docker容器部署OpenStack服務。該項目由Cisco於2014年9月提出,是OpenStack 社區Big Tent開發模式下的孵化項目。

 

Kolla項目是一個支持Openstack服務以容器的方式部署,借助ansible部署工具可以簡單的擴展到多個節點。同時,又借助於使用 heat 來編排 Kolla 集群。

 

環境介紹:

10.0.100.201 kolla-all-in-one   Centos7.2系統

 

10.0.100.207 docker-registry   Centos7.2系統

 

由於我目的很明確,所以這里就不強調網絡了,沒有特殊要求,能上網就行。

 

另外就是安裝kolla,必須自己build鏡像,由於網絡的原因,經常會導致在build 鏡像的時候失敗。這次我們直接采用kolla官方提供的鏡像文件,這樣就不需要自己build鏡像的環節,也就是說我們搭建本地的docker registry。

 

環境准備:

安裝epel源

yum install epel-release -y
 

安裝所需的依賴包

yum install python-devel libffi-devel gcc openssl-devel git python-pip -y
 

 

配置docker源

vi /etc/yum.repos.d/docker.repo [dockerrepo] name=Docker Repository baseurl= http://mirrors.aliyun.com/docker-engine/yum/repo/main/centos/7/ enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg
 

 

安裝docker

yum install docker-engine -y
 

 

設置docker

mkdir /etc/systemd/system/docker.service.d tee/etc/systemd/system/docker.service.d/kolla.conf << 'EOF' [Service] MountFlags=shared EOF
 

 

重啟docker服務

systemctl daemon-reload
systemctl enable docker systemctl restart docker
 

 

 

設置docker采用私有倉庫

編輯 /usr/lib/systemd/system/docker.service

 

#ExecStart=/usr/bin/dockerd ExecStart=/usr/bin/dockerd --insecure-registry 10.0.100.207:4000
 

 

如何搭建本地docker registry請查看:http://sangh.blog.51cto.com/6892345/1927000

 

重啟Docker服務

systemctl daemon-reload
systemctl restart docker
 

 

安裝Ansible

yum install ansible -y
 

 

 

下載Kolla源碼

git clone http://git.trystack.cn/openstack/kolla-ansible
 

這里采用trystack的國內源

cd kolla-ansible pip install .
 

 

復制相關文件

cp -r etc/kolla /etc/kolla/ cp ansible/inventory/* /root/
 

 

生成密碼:

kolla-genpwd
 

 

為了方便登錄Dashboard,我們修改下keystone的密碼,這里根據自己需求修改哈,編輯 /etc/kolla/passwords.yml

 

keystone_admin_password:devin
 

 

另外需要注意的是需要在passwords.yml文件里面新添加一個服務的密碼placement_keystone_password,之后在運行下koll-genpwd,placement_keystone_password選項是在O版本新增的,不然部署的時候會報錯說placement_keystone_password密碼未定義。

 

接下來編輯 /etc/kolla/globals.yml  文件

kolla_internal_vip_address:"10.0.100.208" kolla_install_type:"source" openstack_release:"4.0.2" docker_registry:"10.0.100.207:4000" docker_namespace:"lokolla"
 

10.0.100.208這個ip是一個沒有使用的的ip地址,他是給haproxy使用,單節點其實壓根沒有意義

 

安裝OpenStack

kolla-ansible deploy -i /root/all-in-one
 

 

驗證部署

kolla-ansible post-deploy
 

 

這樣就創建/etc/kolla/admin-openrc.sh 文件

安裝OpenStack client端

pip install python-openstackclient
 

 

運行

source /etc/kolla/admin-openrc.sh cd /usr/share/kolla-ansible ./init-runonce
 

 

最后登錄Dashboard,大功告成。

 

wKiom1kdIIrBKO69AACO480iLzw441.png-wh_50

wKioL1kdII-CHxGPAAGpLXj0iQw672.png-wh_50

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM