1 openstack 概述
openstack概述 :
OpenStack是一個NASA美國國家航空航天局和Rackspace合作研發 的,以Apache許可證授權,並且是一個自由軟件和開放源代碼項目。
Open是開放,Stack則是堆砌之意,合起來就是將眾多的功能服務堆積起來的集合,讓人們通過Openstack雲計算項目,能夠將諸如計算能力、存儲、網絡和軟件等資源抽象成服務,以便讓用戶可以通過互聯網遠程來享用,付費的形式也變得因需而定,調整方便,擁有極強的虛擬可擴展性,是公共和私有雲的建設與管理軟件中的優秀開源項目。
2 openstack的作用
openstack的作用:
OpenStack是一個雲平台管理的項目,它不是一個軟件。這個項目由幾個主要的組件組合起來完成一些具體的工作。
OpenStack是一個旨在為公共及私有雲的建設與管理提供軟件的開源項目。它的社區擁有超過130家企業及1350位開發者,這些機構與個人都將OpenStack作為基礎設施即服務(簡稱IaaS)資源的通用前端。
2.1 IaaS(Infrastructure as a Service),即基礎設施即服務。
先生,你用過這個服務嗎?
消費者通過Internet 可以從完善的計算機基礎設施獲得服務。這類服務稱為基礎設施即服務。基於 Internet 的服務(如存儲和數據庫)是 IaaS的一部分。
2.2 PaaS是Platform-as-a-Service的縮寫,意思是開發平台即服務。 把服務器平台作為一種服務提供的商業模式。
2.3 SaaS是Software-as-a-Service(軟件即服務)的簡稱
2.4 按擁有者分類:
公有雲(Public Cloud)、私有雲(Private Cloud)、混合雲(Hybrid Cloud)
按照技術廠商分類:
VMware vSphere、微軟雲計算解決方案、亞馬遜AWS、OpenStack等
注:國內雲平台使用opensctack二次開發比較多。
3 openstack核心組成主要有: 核心組件 Keystone(身份認證) Nova(計算) Neutron(網絡) Glance(鏡像存儲) Cinder(塊存儲) Swift(對象存儲) Horizon(web UI界面) Ceilometer(計量) Heat(部署編排) Trove(數據庫)
4. OpenStack部署方法,主要有以下5種: 社區手冊 http://docs.openstack.org RDO https://www.rdoproject.org(http://openstack.redhat.com) RedHat Enterprise Linux OpenStack Platform (E210 考試) http://www.redhat.com/en/technologies/linux-platforms/openstack-platform Mirantis(Fuel) https://www.mirantis.com 高級定制 Puppet、Chef kolla 基於docker安裝openstack ,把openstack每個組件做成docker實例
5. Kolla概述和openstack所有結點linux系統初始配置
kolla是openstack下面用於自動化部署的一個項目,它基於docker和ansible來實現,docker主要負責鏡像制作,容器管理。而ansible主要負責環境的部署和管理。
Kolla實際上是分為兩大塊的,一部分,Kolla提供了生產環境級別的鏡像,涵蓋了Openstack用到的各個服務,另一部分是自動化的部署,也就是上面說的ansible部分。最開始兩個部分是在一個項目中的(也就是Kolla),從O版本開始將兩個部分獨立開來,Kolla項目用來構建所有服務的鏡像,Kolla-ansible用來執行自動化部署.
5.1 關閉selinux和防火牆firewalld
5.2 安裝epel源,配置hostname
yum install -y epel-release
修改/etc/hostname
doupo
vim /etc/hosts
服務器外網ip doupo.cn doupo
5.3 時間同步
yum install ntp
systemctl enable ntpd.service
systemctl startntpd.service
配置pip鏡像源,方便快速下載python庫
mkdir /root/.pip/ ---> vim /root/.pip/pip.config
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
5.4 配置網卡信息
cd /etc/sysconfig/network-scripts
cp ifcfg-eth0 ./ifcfg-eth1
TYPE="Ethernet"
BOOTPROTO="none"
NAME="eth2"
DEVICE="eth2"
ONBOOT="yes"
重啟之后檢查下網卡配置文件是否有變化
5.5 安裝基礎包和docker服務
yum install python-devel libffi-devel gcc openssl-devel git python-pip -y
pip install -U pip #升級一下pip,不然后,后期安裝會報警告
yum install -y yum-utils device-mapper-persistent-data lvm2 #安裝必要的一些系統工具
5.6 添加docker yum 源安裝docker
systemctl stop libvirtd.service && systemctl disable libvirtd.service && systemctl status libvirtd.service
如果有的話,卸載舊的Docker,否則可能會不兼容:
yum remove docker* python-docker-py mariadb* httpd*(后期檢查部署環境的時候,會報錯一定要卸載掉)
報錯如下:fatal: [doupo]: FAILED! => {"changed": false, "elapsed": 1, "msg": "Timeout when waiting for
122.114.73.247:3306 to stop."}
添加docker-ce yum源配置文件並安裝docker
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安裝 Docker-CE社區版本 yum install -y docker-ce
systemctl start docker && systemctl enable docker && systemctl status docker
設置docker volume卷掛載方式
mkdir /etc/systemd/system/docker.service.d
tee /etc/systemd/system/docker.service.d/kolla.conf << 'EOF'
[Service]
MountFlags=shared
EOF
注:加上MountFlags=shared后,當docker宿主機新增分區時,docker服務不用重啟。如果不加docker服務服務重啟,docker中的實例才可以使用新加的磁盤或分區。 添加這個參考后,后期在openstack中使用cinder存儲服務時,新加磁盤比較方便
6. 指定docker 鏡像加速器
mkdir /etc/docker ---> vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://e9yneuy4.mirror.aliyuncs.com"]
}
注:如果需要使用自己的本地私有倉庫,寫成如下:
{
"registry-mirrors": ["https://e9yneuy4.mirror.aliyuncs.com"]
"insecure-registries": ["122.114.73.247:4000"]
}
systemctl daemon-reload #修改了啟動腳本,需要執行
7. 安裝kolla-ansible
yum install -y ansible
下載kolla-ansible代碼
cd /root -->git clone http://git.trystack.cn/openstack/kolla-ansible -b stable/pike #下載pike版本的openstack
安裝kolla-ansible依賴包
cd /root/kolla-ansible
pip install .
復制kolla-ansible的相關配置文件
cp -r etc/kolla /etc/kolla/ cp ansible/inventory/* /etc/kolla/
ls /etc/kolla
all-in-one globals.yml multinode passwords.yml
注:all-in-one #安裝單節點openstack的ansible自動安裝配置文件
multinode #安裝多節點openstack的ansible自動安裝配置文件
globals.yml #openstack 部署的自定義配置文件
passwords.yml #openstack中各個服務的密碼
修改虛擬機類型為qemu
注:如果是在虛擬機里裝kolla,希望可以啟動再啟動虛擬機,那么你需要把virt_type=qemu,默認是kvm。如果vmware開了“虛擬化Intel VT”功能,就不用寫這個了。
mkdir -p /etc/kolla/config/nova
cat << EOF > /etc/kolla/config/nova/nova-compute.conf
[libvirt]
virt_type=qemu
cpu_mode = none
EOF
8. 自定義kolla-ansible安裝openstack的相關配置文件
自動生成openstack各服務的密碼文件
kolla-genpwd
vim /etc/kolla/passwords.yml
keystone_admin_password: HsPbEQHxTqmewKYNoRPpIOyQNdEYpHy36OX67TG3
keystone_admin_password:密碼
注:這是登錄Dashboard,admin使用的密碼,你可以根據自己需要進行修改
編輯 /etc/kolla/globals.yml 自定義openstack中部署事項
#kolla_base_distro: "centos" #選擇下載的鏡像為基於centos版本的鏡像
kolla_base_distro: "centos"
#kolla_install_type: "binary" #去了前面的#號,使用yum安裝二進制包安裝,源碼安裝,指的是使用git clone源碼安裝
#openstack_release: "" 改為:openstack_release: "pike" #指定安裝pike版本的openstack,后期下載的openstack相關的docker鏡像的tag標記也都為pike
#node_custom_config: "/etc/kolla/config" #去掉前面的#
kolla_internal_vip_address: "122.114.73.247" # 我們沒有啟用高可用,所以這里的IP可以和ens33一樣,也可以獨立寫一個和ens33同網段的IP。
注:如果配置了高可用,這里要使用一個沒被占用的IP。這個IP是搭建HA高可用的浮動IP。 此IP將由keepalived管理以提供高可用性,應設置為和network_interface eth0 同一個網段的地址。
network_interface: "eth0" # Kolla-Ansible需要設置一些網絡選項。 我們需要設置OpenStack使用的網絡接口。設置的第一個接口是“network_interface”。 這是openstack內部多個管理類型網絡的默認接口。
neutron_external_interface: "eth1" #所需的第二個接口專用於Neutron外部(或公共)網絡,可以是vlan或flat,取決於網絡的創建方式。 此接口應在沒有IP地址的情況下處於活動 如果不是,openstack雲平台中的雲主機實例將無法訪問外部網絡。 只要網卡啟動着,就可以了,不要給IP,有IP時br-ex橋接就不成功了。
#enable_cinder: "no" #先不開啟cinder
#enable_haproxy: "yes" #去了前面的#號,改yes為no。關閉高可用
9. 基於kolla-ansible安裝openstack私有雲
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub root@doupo
vim /etc/kolla/all-in-one #把localhost替換成doupo
開始部署openstack
kolla-ansible -i /etc/kolla/all-in-one prechecks #對主機進行預部署檢查,如果檢查到那個端口異常,需把改服務卸載掉
沒報錯之后可以進行拉去鏡像
kolla-ansible -i /etc/kolla/all-in-one pull
docker images | wc -l
部署openstack
kolla-ansible -i /etc/kolla/all-in-one deploy 如報以下錯:
RUNNING HANDLER [common : Initializing toolbox container using normal user] ****
fatal: [xuegod63]: FAILED! => {"changed": false, "cmd": ["docker", "exec", "-t", "kolla_toolbox", "/usr/bin/ansible", "--version"], "delta": "0:00:01.251727", "end": "2018-08-29 22:52:03.283733", "msg": "non-zero return code", "rc": 126, "start": "2018-08-29 22:52:02.032006", "stderr": "", "stderr_lines": [], "stdout": "OCI runtime exec failed: exec failed: container_linux.go:348
kolla-ansible -i /etc/kolla/all-in-one deploy #再運行一下。就自行解決了
kolla-ansible -i /etc/kolla/all-in-one post-deploy 驗證部署是否成功
cat admin-openrc.sh #查看openstack登錄帳號
訪問:122.114.73.247 使用admin-openrc.sh賬號密碼登錄

