一、准備工作
最小化安裝CentOS 7.5,裝完后,進行初始化
selinux,防火牆端口無法訪問,主機名問題,都是安裝的常見錯誤,一定要細心確認。
kolla的安裝,要求目標機器是兩塊網卡:
- ens33,設置的IP是:192.168.41.13,之后Horizon訪問就是通過這個IP地址;
- ens37,不分配IP,這個是讓neutron的br-ex 綁定使用,虛擬機是通過這塊網卡訪問外網。
- 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
