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帳號密碼登陸