Kolla部署Pike版本的OpenStack-allinone

openstack概述
openstack的作用
openstack版本命名規則
openstack各組件關係
Kolla概述和openstack所有結點linux系統初始配置
安裝kolla-ansible
自定義kolla-ansible安裝openstack的相關配置文件
開始基於kolla-ansible安裝openstack私有云
在這裏插入圖片描述

openstack 概述

openstack概述 :OpenStack是一個NASA美國國家航空航天局和Rackspace合作研發的,以Apache許可證授權,並且是一個自由軟件和開放源代碼項目。
Open是開放,Stack則是堆砌之意,合起來就是將衆多的功能服務堆積起來的集合,讓人們通過Openstack雲計算項目,能夠將諸如計算能力、存儲、網絡和軟件等資源抽象成服務,以便讓用戶可以通過互聯網遠程來享用,付費的形式也變得因需而定,調整方便,擁有極強的虛擬可擴展性,是公共和私有云的建設與管理軟件中的優秀開源項目。

openstack的作用

openstack的作用:OpenStack是一個雲平臺管理的項目,它不是一個軟件。這個項目由幾個主要的組件組合起來完成一些具體的工作。
OpenStack是一個旨在爲公共及私有云的建設與管理提供軟件的開源項目。它的社區擁有超過130家企業及1350位開發者,這些機構與個人都將OpenStack作爲基礎設施即服務(簡稱IaaS)資源的通用前端。
1、IaaS(Infrastructure as a Service),即基礎設施即服務。
消費者通過Internet 可以從完善的計算機基礎設施獲得服務。這類服務稱爲基礎設施即服務。基於 Internet 的服務(如存儲和數據庫)是 IaaS的一部分。比如:在騰訊雲上買一臺雲主機(8個CPU,32G,5T硬盤雲主機等)
2、PaaS是Platform-as-a-Service的縮寫,意思是開發平臺即服務。 把服務器平臺作爲一種服務提供的商業模式。比如:OpenShift是紅帽的雲開發平臺即服務(PaaS)。
OpenShift是自由和開放源碼的雲計算平臺,它可以使開發人員能夠創建、測試和運行他們的應用程序,並且可以把它們部署到雲中。Openshift廣泛支持多種編程語言和框架,如Java,Ruby和PHP等。另外它還提供了多種集成開發工具如Eclipse integration,JBoss Developer Studio和 Jenkins等。OpenShift 基於一個開源生態系統爲移動應用,數據庫服務等,提供支持。
例2:新浪的SAE PaaS雲平臺,國內:http://www.sinacloud.com/sae.html
在這裏插入圖片描述
PaaS 的 4大特點:
在這裏插入圖片描述
注:Iaas幹了硬件工程師的活,paas幹了運維的活
3、SaaS是Software-as-a-Service(軟件即服務)的簡稱。
例:https://yiqixie.com中國的一起寫,多人編輯一個word或execle。國外:docs.google.com或 微軟的office365
注:有SaaS平臺, 不需要運維,不需要開發。
要求:你越來越專業!
總結:
三種雲平臺架構: IAAS ,PAAS ,SAAS都是不同的商業模式。
在這裏插入圖片描述
按擁有者分類:公有云(Public Cloud)、私有云(Private Cloud)、混合雲(Hybrid Cloud)
按照技術廠商分類:VMware vSphere、微軟雲計算解決方案、亞馬遜AWS、OpenStack等
注:國內雲平臺使用opensctack二次開發比較多。

openstack版本命名規則

Openstack命名方式版本發佈以A-Z字母順序來發布,很好記。
例:
2010年10月 發佈‘Austin’
2011年2月 發佈‘Bexar’ [地名] [美國] 貝爾;
2011年4月 發佈‘Cactus’ [地名] [美國] 卡克特斯;
2011年7月 發佈‘Diablo’
2012年4月 發佈‘Essex’
2012年10月 發佈‘Folsom’
2013年4月 發佈‘Grizzly’
互動:如果到了Z以後,AA。。。 AB。。
磁盤起名到sdz後,sda。。。。sdz -》 sdaa 。。sdab

openstack各組件關係

Keystone(身份認證)
Nova(計算)
Neutron(網絡)
Glance(鏡像存儲)
Cinder(塊存儲)
Swift(對象存儲)
Horizon(web UI界面)
Ceilometer(計量)
Heat(部署編排)
Trove(數據庫)
下面詳細說明:
身份認證(Keystone):統一的授權、認證管理。所有組件都依賴於Keystone提供3A(Account, Authentication, Authorization)服務。
例1: 3A認證
1、認證(Authentication),驗證用戶的身份與可使用的網絡服務;
2、授權(Authorization):依據認證結果開放網絡服務給用戶;
3、計帳(Accounting):記錄用戶對各種網絡服務的用量,並提供給計費系統。整個系統在網絡管理與安全問題中十分有效。
比如:寬帶收費就是3A認證的典型例子:輸入帳號密碼(認證)->開10M帶寬(授權)->在營業廳(計帳)
計算管理(Nova):Nova是OpenStack雲中的計算組織控制器。Nova自身並沒有提供任何虛擬化能力,相反它使用libvirt API來與被支持的虛擬技術Hypervisors交互。如:kvm、Xen、VMware等虛擬化技術。
Neutron(網絡):實現虛擬機的網絡資源管理如網絡連接、ip管理、公網映射
鏡像管理(Glance):主要存儲和管理系統鏡像。centos鏡像
塊存儲(Cinder):爲虛擬機提供存儲空間。 比如硬盤,分區,目前支持ip-san、fc-san等。
對象存儲(Swift):OpenStack Swift 開源項目提供了彈性可伸縮、高可用的分佈式對象存儲服務適合存儲大規模非結構化數據。通過key/value的方式實現對文件的存儲,現在的雲盤就是這樣的,和MFS,HDFS類似
注:如果客戶需要一個1000T的存儲空間,使用Cinder或Glance就不行,效率太低。這時就用Swift。
界面(Horizon):安裝好後,openstack的web界面控制檯DashBoard
Ceilometer(計量):Ceilometer是OpenStack中的一個子項目,它像一個漏斗一樣,能把OpenStack內部發生的幾乎所有的事件都收集起來,然後爲計費和監控以及其它服務提供數據支撐。
Ceilometer [sɪ’lɒmɪtə] 雲冪測量儀
Heat(部署編排):是一個編排引擎,它可以基於文本文件形式的模板啓動多個複合雲應用程序(這些文件可以被視爲代碼)。簡單來說,Heat爲OpenStack用戶提供了一種自動創建雲組件(如網絡、實例、存儲設備等)的方法。
[hɪt]
Trove(數據庫):爲關係型數據庫和非關係型數據庫引擎提供可擴展的和可靠的雲數據庫服務,並繼續改進其功能齊全、可擴展的開源框架。
Trove [trəʊv] 寶庫
在這裏插入圖片描述

Openstack的網絡模式有5種

Local模式:一般測試時使用,只需一臺物理機即可。
GRE模式:隧道模式, VLAN數量沒有限制,性能有點問題。
Vlan模式:vlan數量有4096的限制
VXlan模式:vlan數量沒有限制,性能比GRE好。
Flat模式:管理員創建租戶直接到外網,不需要NAT。
擴展:VXLAN概述
VXLAN是由思科與VMware提出的。
在這裏插入圖片描述
LAN 局域網
VLAN 虛擬局域網
VXLAN 虛擬擴展局域網
VXLAN (Virtual Extensible LAN,虛擬擴展局域網) 它是一種在UDP中封裝MAC的簡單機制,可以創建跨多個物理IP子網的虛擬2層子網
比如: 我在北京,你在上海,通過vxlan技術,可以讓我們在同一個局域網中。 (有點vpn隧道)
爲什麼我們需要這種新技術?現在不只一種標準可以在IP中封裝MAC(包括EtherIP和GRE通道橋接),但是它們都無法做到VLAN邏輯標記,因此您只能使用最多4096個不同的VLAN。即使可以使用這些標準來分隔邏輯網,您也必須(在負載中)深入分析MAC頭信息,以查找出虛擬分片ID。而VXLAN通過一個24位分片ID,在一個數據中心內它能部署百萬個虛擬網。而且,VXLAN數據包格式很容易在硬件中實現,所以它以後也許可以更緊密地與物理網絡設備集成。
何時需要VXLAN?在需要大量邏輯網時,才應該考慮使用VXLAN。如果只有少量邏輯網,那麼就還是應該使用經過時間考驗的技術,如VLAN。 你的邏輯網不超過4096個,都用VLAN。
VXLAN硬件產品:H3C S6800數據中心以太網匯聚交換機
在這裏插入圖片描述
H3C S6800系列交換機支持VXLAN (Virtual Extensible LAN,虛擬擴展局域網), VXLAN通過將虛擬機發出的數據包封裝在UDP中,並使用物理網絡的IP/MAC作爲outer-header封裝後在物理IP網上傳輸,到達目的地後由隧道終結點解封並將數據發送給目標虛擬機,解決了地理分散的數據中心之間遠距離虛擬機遷移問題。
VLAN與VXLAN之間有何區別:VXLAN顯然更具可擴展性(4,096個VLAN網 vs 1600萬個VXLAN網)

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實例

Kolla概述和openstack所有結點linux系統初始配置

kolla是openstack下面用於自動化部署的一個項目,它基於docker和ansible來實現,docker主要負責鏡像製作,容器管理。而ansible主要負責環境的部署和管理。
Kolla實際上是分爲兩大塊的,一部分,Kolla提供了生產環境級別的鏡像,涵蓋了Openstack用到的各個服務,另一部分是自動化的部署,也就是上面說的ansible部分。最開始兩個部分是在一個項目中的(也就是Kolla),從O版本開始將兩個部分獨立開來,Kolla項目用來構建所有服務的鏡像,Kolla-ansible用來執行自動化部署。

linux系統環境配置

[root@test63 ~]# vim /etc/selinux/config #關閉Selinux和防火牆
SELINUX=disabled
[root@test63 ~]# reboot   #如果原來的系統開着selinux,那麼需要重啓,才能關閉selinux 
[root@test63 ~]# systemctl stop firewalld #關閉Firewalld
[root@test63 ~]# systemctl disable firewalld
[root@test63 ~]# systemctl status firewalld
[root@test63 ~]# mv /opt/CentOS-* /etc/yum.repos.d/  #安裝 Epel源
[root@test63 ~]# yum install epel-release -y
[root@test63 ~]# cat /etc/hostname#配置 Hostname
test63.cn
[root@test63 ~]# cat /etc/hosts #配置/etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.63 test63.cn test63
[root@test63 ~]# yum install ntp #同步時間
[root@test63 ~]# systemctl enable ntpd.service
[root@test63 ~]# systemctl start ntpd.service
[root@test63 ~]# mkdir ~/.pip #配置 pip 鏡像源,方便快速下載python庫(這一步很重要),因爲openstack主要是基於python做的
[root@test63 ~]# vim  ~/.pip/pip.conf  #寫入下以內容
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
配置網卡信息

在test63上添加一個新的網卡,類型是bridge模式
在這裏插入圖片描述
注:如果在服務器直接安裝,兩塊網卡的IP,就算是同一個網段或者不同網段都可以的。
生成ens38的網卡配置文件

[root@test63 ~]#cd /etc/sysconfig/network-scripts/
[root@test63 network-scripts]# cp ifcfg-ens33 ifcfg-ens38
[root@test63 network-scripts]# vim ifcfg-ens38
TYPE="Ethernet"
BOOTPROTO="none"
NAME="ens38"
DEVICE="ens38"
ONBOOT="yes"
[root@test63 network-scripts]# vim ifcfg-ens33 #檢查一下ens33網卡配置文件,發現在新添加網卡,重啓系統後,啓動協議變了,現在改回來。
改:BOOTPROTO="dhcp"
爲:BOOTPROTO="none"
[root@test63 network-scripts]# service  network restart
安裝基礎包和docker服務
[root@test63 ~]# yum install python-devel libffi-devel gcc openssl-devel git python-pip –y #安裝基礎包
[root@test63 ~]# pip install -U pip  #升級一下pip,不然後,後期安裝會報警告
[root@test63 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2   #安裝必要的一些系統工具
[root@test63 ~]# systemctl stop libvirtd.service && systemctl disable libvirtd.service && systemctl status libvirtd.service #添加docker yum源並安裝docker
[root@test63 ~]# yum remove  docker docker-io docker-selinux python-docker-py #如果有的話,卸載舊的Docker,否則可能會不兼容
[root@test63 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #添加docker-ce yum源配置文件並安裝docker,會自動添加yum源文件
[root@test63 ~]# cat /etc/yum.repos.d/docker-ce.repo  #查看新生成的yum源配置文件
[root@test63 ~]# yum -y install docker-ce   #咱們在線安裝的是docker-ce-18.06.0.ce 版本, Docker-CE社區版本
[root@test63 ~]# systemctl start  docker  &&  systemctl enable docker && systemctl status docker   #啓動Docker服務
[root@test63 ~]# mkdir /etc/systemd/system/docker.service.d #設置docker volume卷掛載方式
[root@test63 ~]# tee /etc/systemd/system/docker.service.d/kolla.conf << 'EOF'
[Service]
MountFlags=shared
EOF

注:加上MountFlags=shared後,當docker宿主機新增分區時,docker服務不用重啓。如果不加docker服務服務重啓,docker中的實例纔可以使用新加的磁盤或分區。 添加這個參數後,後期在openstack中使用cinder存儲服務時,新加磁盤比較方便。

指定docker 鏡像加速器

很重要,不然後期從國外下載docker鏡像會直接報錯,而且速度慢

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

注:如果需要使用自己的本地私有倉庫,寫成如下

{
  "registry-mirrors": ["https://e9yneuy4.mirror.aliyuncs.com"]  
  "insecure-registries": ["192.168.1.63:4000"]
}
重啓相關服務
[root@test63 ~]# systemctl daemon-reload #修改了啓動腳本,需要執行
[root@test63 ~]# systemctl enable docker && systemctl restart docker && systemctl status docker

安裝kolla-ansible

 [root@test63 ~]# yum install ansible –y #安裝 ansible

[root@test63 ~]# cd /root #安裝kolla-ansible.下載kolla-ansible的代碼.注:kolla-ansible可以實現使用ansible自動安裝openstack
[root@test63 ~]# git clone http://git.trystack.cn/openstack/kolla-ansible -b stable/pike #下載pike版本的openstack

安裝kolla-ansible需要依賴包

[root@test63 ~]# cd /root/kolla-ansible
[root@test63 kolla-ansible]# pip install .  #這裏.代表當前目錄 

複製kolla-ansible的相關配置文件

[root@test63 kolla-ansible]# cp -r etc/kolla /etc/kolla/
[root@test63 kolla-ansible]# cp ansible/inventory/* /etc/kolla/
[root@test63 kolla-ansible]# 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”功能,就不用寫這個了。
在這裏插入圖片描述

[root@test63 kolla-ansible]# mkdir -p /etc/kolla/config/nova
[root@test63 kolla-ansible]# cat << EOF > /etc/kolla/config/nova/nova-compute.conf
[libvirt]
virt_type=qemu
cpu_mode = none
EOF

自定義kolla-ansible安裝openstack的相關配置文件

1、自動生成openstack各服務的密碼文件(注:這是登錄Dashboard,admin使用的密碼,你可以根據自己需要進行修改)

[root@test63 kolla-ansible]# kolla-genpwd
[root@test63 ~]# vim /etc/kolla/passwords.yml
改:158 keystone_admin_password: HsPbEQHxTqmewKYNoRPpIOyQNdEYpHy36OX67TG3
爲:keystone_admin_password: 123456 

2、編輯 /etc/kolla/globals.yml 自定義openstack中部署事項

[root@test63 ~]# vim /etc/kolla/globals.yml #配置openstack安裝中的參數
改:15 #kolla_base_distro: "centos"    #選擇下載的鏡像爲基於centos版本的鏡像
爲: kolla_base_distro: "centos"
改:18 #kolla_install_type: "binary"  #去了前面的#號,使用yum安裝二進制包安裝,源碼安裝,指的是使用git clone源碼安裝
爲:18 kolla_install_type: "binary"
改:21 #openstack_release: ""
爲:openstack_release: "pike"    #指定安裝pike版本的openstack,後期下載的openstack相關的docker鏡像的tag標記也都爲pike
23 # Location of configuration overrides
24 #node_custom_config: "/etc/kolla/config"   #配置文件的位置
改:31 kolla_internal_vip_address: "10.10.10.254"
爲:31 kolla_internal_vip_address: "192.168.1.63"  # 我們沒有啓用高可用,所以這裏的IP可以和ens33一樣,也可以獨立寫一個和ens33同網段的IP。注:如果配置了高可用,這裏要使用一個沒被佔用的IP。這個IP是搭建HA高可用的浮動IP。 此IP將由keepalived管理以提供高可用性,應設置爲和network_interface ens33 同一個網段的地址。
改:73 #network_interface: "eth0"
爲: network_interface: "ens33"    # Kolla-Ansible需要設置一些網絡選項。我們需要設置OpenStack使用的網絡接口。設置的第一個接口是“network_interface”。這是openstack內部多個管理類型網絡的默認接口。
改:101 #neutron_external_interface: "eth1"
爲:101 neutron_external_interface: "ens38"  #所需的第二個接口專用於Neutron外部(或公共)網絡,可以是vlan或flat,取決於網絡的創建方式。 此接口應在沒有IP地址的情況下處於活動 如果不是,openstack雲平臺中的雲主機實例將無法訪問外部網絡。 只要網卡啓動着,就可以了,不要給IP,有IP時br-ex橋接就不成功了。
135 #enable_cinder: "no"   #先不開啓cinder
改:151 #enable_haproxy: "yes"
爲:151 enable_haproxy: "no"   #去了前面的#號,改yes爲no。關閉高可用

開始基於kolla-ansible安裝openstack私有云

生成SSH Key,並授信本節點

[root@test63 kolla]# ssh-keygen
[root@test63 kolla]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@test63

配置單節點清單文件(目前只有一個節點)

[root@test63 kolla]# vim /etc/kolla/all-in-one   #把localhost替換成test63
:1,$s/localhost/test63/
:1,$s/ansible_connection=local//   
注:將以下組件,都安裝到test63這臺機器上:改第1行到19行中。
[control]
test63     
[network]
test63     
[compute]
test63     
[storage]
test63     
。。。
[deployment]
test63       

開始部署OpenStack

對主機進行預部署檢查

[root@test63 ~]# kolla-ansible -i /etc/kolla/all-in-one prechecks

在這裏插入圖片描述
注:我這裏有最新顯示78個ok,另外,現在還沒有運行docker實例了,
拉取鏡像

[root@test63 kolla]# kolla-ansible -i /etc/kolla/all-in-one pull #-i是指定主機清單

在這裏插入圖片描述
查看網絡鏈接

[root@test63 ~]# netstat  -antup | grep 443
tcp        0    385 192.168.1.63:34580  116.62.81.173:443  ESTABLISHED 42547/dockerd   

發現在走的是阿里雲的docker加速結點,下載的鏡像。
在這裏插入圖片描述

[root@test63 ~]# docker images  #查看下載到的鏡像
REPOSITORY              TAG       IMAGE ID            CREATED             SIZE
kolla/centos-binary-cron   pike      659fa47c7d43        About an hour ago   455MB
。。。
[root@test63 ~]# docker images | wc -l  #整個過程,會下載了32個鏡像
32

最後進入實際的OpenStack部署

[root@test63 ~]# kolla-ansible -i /etc/kolla/all-in-one deploy  #因爲咱們前面已經下載的鏡像,所以這時,安裝會快一些。如果前面沒有下載鏡像,那麼這時,還會邊下載各種openstack相關的鏡像邊部署docker實例。

報錯:
在這裏插入圖片描述

RUNNING HANDLER [common : Initializing toolbox container using normal user] ****
fatal: [test63]: 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:

解決:

[root@test63 ~]# kolla-ansible -i /etc/kolla/all-in-one deploy  #再運行一下。就自行解決了

在這裏插入圖片描述
到此安裝成功。
驗證部署

[root@test63 ~]# kolla-ansible -i /etc/kolla/all-in-one post-deploy

在這裏插入圖片描述
這樣就創建 /etc/kolla/admin-openrc.sh 文件

[root@test63 kolla]# ll /etc/kolla/admin-openrc.sh
-rw-r--r-- 1 root root 323 8月  10 17:58 /etc/kolla/admin-openrc.sh
[root@test63 kolla]# cat admin-openrc.sh  #查看openstack初始化腳本的配置,如登錄帳號
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=123456  #帳號和密碼

測試:http://192.168.1.63 訪問成功。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章