openstack 的安裝和部署


1.什么是雲計算

1:什么是雲計算?

雲計算是通過虛擬化技術去實現的,它是一種按量付費的模式!

2:為什么要用雲計算?

小公司:1年,20人+,500w,招一個運維,15k,(10台*1.5w,托管IDC機房,8k/年,帶寬 100M,5個公網ip, 10k/月),  買10台雲主機,600*10=6000
大公司:舉行活動,加集群,把閑置時間出租,超賣(kvm)
16G,kvm,64G(ksm),金牌用戶(200w+/月)

3:雲計算有哪些功能?虛擬機的管理平台(計費)

kvm:1000宿主機(agent),虛擬出2w虛擬機,
虛擬機的詳細情況:硬件資源,ip情況統計?
虛擬機管理平台:每台虛擬機的管理,都用數據庫來統計

4:雲計算的服務類型

IAAS  基礎設施即服務 ECS雲主機 自己部署環境,自己管理代碼和數據
infrastructure as an service 

PAAS(docker) 平台即服務 提供軟件的運行環境,java ,python,go, c#,nodejs 自己管理代碼和數據
platfrom as an service
SAAS   軟件即服務 企業郵箱,cdn,rds
software as an service
openstack實現的是雲計算IAAS,開源的雲計算平台,apache 2.0,阿里雲(飛天雲平台)
2.openstack (soa架構)
雲平台
(keystone認證服務,glance鏡像服務,nova計算服務,neutron網絡服務,cinder存儲服務,horizon web界面)

每個服務:數據庫,消息隊列,memcached緩存,時間同步
首頁www.jf.com/index.html
秒殺www.jd.com/miaosha/index.html
會員:www.jd.com/plus/index.html
登錄:www.jd.com/login/index






nginx+php +mysql(500張表)
SOA(拆業務,把每一個功能都拆成一個獨立的web服務,每一個獨立的web服務,至少擁有一個集群)

微服務架構: 億級用戶
開源的微服框架
阿里開源的dubbo 
spring boot


自動化代碼上線 Jenkins + gitlab ci
自動化代碼質量檢查 sonarqube



官網:https://docs.openstack.org/train/

openstack 版本

A-Z 開頭
3.虛擬機規划
controller:內存3G,cpu開啟虛擬化,ip:10.0.0.11
compute01: 內存1G,cpu開啟虛擬化(必開),ip:10.0.0.31

host解析,


[root@controller ~]# vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.11 controller
10.0.0.31 computer1

[root@controller ~]# scp -rp /etc/hosts 10.0.0.31 /etc/hosts


4.配置yum源

1.掛載光盤

[root@computer1 ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only
[root@controller ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only


#查看 (如果有內容代表掛載成功)
[root@computer1 ~]# ll /mnt
total 686
-rw-rw-r-- 1 root root     14 Nov 26  2018 CentOS_BuildTag
drwxr-xr-x 3 root root   2048 Nov 26  2018 EFI
-rw-rw-r-- 1 root root    227 Aug 30  2017 EULA
-rw-rw-r-- 1 root root  18009 Dec 10  2015 GPL
drwxr-xr-x 3 root root   2048 Nov 26  2018 images
drwxr-xr-x 2 root root   2048 Nov 26  2018 isolinux
drwxr-xr-x 2 root root   2048 Nov 26  2018 LiveOS
drwxrwxr-x 2 root root 663552 Nov 26  2018 Packages
drwxrwxr-x 2 root root   4096 Nov 26  2018 repodata
-rw-rw-r-- 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-7
-rw-rw-r-- 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r-- 1 root root   2883 Nov 26  2018 TRANS.TBL

[root@controller ~]# scp -rp openstack_rpm.tar.gz 10.0.0.31:/opt

rz 上傳openstack_rpm.tar.gz到/opt,並解壓
生成repo配置文件



root@controller opt]# vim/etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///mnt
gpgcheck=0

[openstack]
name=openstack
baseurl=file:///opt/repo
gpgcheck=0

root@controller opt]#echo  'mount /dev/cdrom /mnt' >>/etc/rc.local
root@controller opt]# chmod +x /etc/rc.d/rc.local

[root@controller opt]# scp -rp /etc/yum.repos.d/local.repo 10.0.0.31:/etc/yum.repos.d/local.repo
[root@computer1 opt]# vim /etc/yum.repos.d/local.repo

[root@computer1 opt]# echo  'mount /dev/cdrom /mnt' >>/etc/rc.local

[root@computer1 opt]# chmod +x /etc/rc.d/rc.local


#注意:兩台都要配

2.安裝基礎服務

在所有節點上執行:
a:時間同步
[root@controller opt]# yum install -y chrony
[root@computer1 opt]#  yum install -y chrony


#編輯控制節點配置文件
[root@controller opt]# vim /etc/chrony.conf 

1.
將 server 1.centos.pool.ntp.org iburst 改成
server ntp6.aliyun.com iburst


另三行刪掉

2.將 #allow 192.168.0.0/1改成
allow 10.0.0.0/24
#重啟服務
[root@controller opt]# vim /etc/chrony.conf 
 systemctl restart chronyd


#編輯計算節點
[root@computer1 opt]# vim /etc/chrony.conf 
將 server 1.centos.pool.ntp.org iburst 改成
server 10.0.0.11 iburst
另三行刪掉
[root@computer1 opt]# systemctl restart chronyd


5.安裝openstack客戶端和openstack-selinux
1.在所有節點上執行
[root@control ~]# yum install python-openstackclient openstack-selinux -y 

[root@computer1 ~]# yum install python-openstackclient openstack-selinux -y

查看官方文檔

6.安裝數據庫以及安全初始化
2.僅控制節點執行:
[root@control ~]# yum install mariadb mariadb-server python2-PyMySQL -y


在官方文檔上有 

https://docs.openstack.org/mitaka/zh_CN/install-guide-obs/environment-sql-database.html


3.創建並編輯 /etc/my.cnf.d/openstack.cnf
[root@control ~]# cat /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 10.0.0.11          # 值為控制節點的管理網絡IP地址以使得其它節點可以通過管理網絡訪問數據庫
default-storage-engine = innodb   #默認存儲引擎
innodb_file_per_table             #為每個表獨立表空間文件     
max_connections = 4096             #最大連接數
collation-server = utf8_general_ci  # 默認字符集
character-set-server = utf8 



4.啟動mariadb 並加入開機自啟
[root@control ~]# systemctl start mariadb
[root@control ~]# systemctl enable mariadb

 
5. 為了保證數據庫服務的安全性,運行

[root@control ~]# mysql_secure_installation       一定要執行要不然后面時間同步會有坑


腳本。特別需要說明的是,為數據庫的root用戶設置一個適當的密碼。
 
 
 
 回車
 #需要輸入當前root用戶的密碼,這里我們是空,就直接回車就可以了
 Enter current password for root (enter for none):  
#設置數據庫的密碼 ,這里我不想設置 選擇n
Set root password? [Y/n] 
#移除地址用戶 選擇yes
Remove anonymous users? [Y/n] Y
#禁止root遠程登錄 選擇Y
Disallow root login remotely? [Y/n] Y
#移除data的數據庫和訪問他的權限 選擇 y
Remove test database and access to it? [Y/n] y
#重載權限表 選擇 y
Reload privilege tables now? [Y/n]  y
7.消息隊列
OpenStack 使用 message queue 協調操作和各服務的狀態信息。消息隊列服務一般運行在控制節點上。OpenStack支持好幾種消息隊列服務包括 RabbitMQ, Qpid, 和 ZeroMQ。不過,大多數發行版本的OpenStack包支持特定的消息隊列服務。本指南安裝 RabbitMQ 消息隊列服務,因為大部分發行版本都支持它。如果你想安裝不同的消息隊列服務,查詢與之相關的文檔。

就是把所有功能拆成 獨立的服務,服務跟服務之間就涉及到調用的問題,這時就要通過消息隊列進行(類似一個中介




1.安裝rabbitmq並創建用戶  
[root@control ~]# yum  install rabbitmq-server -y
2.啟動消息隊列服務並將其配置為隨系統啟動

[root@control ~]# systemctl enable rabbitmq-server.service

[root@control ~]# systemctl start rabbitmq-server.service

3.添加 openstack 用戶:
[root@control ~]# rabbitmqctl add_user openstack RABBIT_PASS
Creating user "openstack" ...

4.給openstack用戶配置寫和讀權限
[root@control ~]#  rabbitmqctl set_permissions openstack ".*" ".*" ".*"

Setting permissions for user "openstack" in vhost "/" ...

5.查看端口

[root@control ~]# netstat -lntup |grep 5672
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      10118/beam          
tcp6       0      0 :::5672                 :::*                    LISTEN      10118/beam          
6. 弄一個插件
[root@control ~]# rabbitmq-plugins enable rabbitmq_management

查看端口發現多一個15672
[root@control ~]# netstat -lntup |grep 5672
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      10118/beam          
tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      10118/beam          
tcp6       0      0 :::5672                 :::*                    LISTEN      10118/beam          


訪問一下

http://10.0.0.11:15672/

默認用戶:guest

默認密碼:guest

8.Memcached
認證服務認證緩存使用Memcached緩存令牌。緩存服務memecached運行在控制節點。在生產部署中,我們推薦聯合啟用防火牆、認證和加密保證它的安全。


1.安裝軟件
[root@control ~]# yum  install memcached python-python-memcached -y


2.修改配置文件    這一條在M版本的官方文檔沒有,但在o 版本的有
[root@control ~]# sed -i 's#127.0.0.1#10.0.0.11#g' /etc/sysconfig/memcached 

3.啟動Memcached服務,並且配置它隨機啟動。
[root@control ~]# systemctl enable memcached.service

[root@control ~]# systemctl start memcached.service

4.查看端口
[root@control ~]# netstat -lntup |grep 11211
tcp        0      0 10.0.0.11:11211         0.0.0.0:*               LISTEN      11095/memcached     
tcp6       0      0 ::1:11211               :::*                    LISTEN      11095/memcached     
udp        0      0 10.0.0.11:11211         0.0.0.0:*                           11095/memcached     
udp6       0      0 ::1:11211               :::*                                11095/memcached     



Horizon 是一個 dashboard 就是一個控制面板

Celiometer 是一個監控計費
像快照,配置都要計費的

Keystone 是一個登錄認證


像有些網站都是qq登錄 或者微信登錄
Heat 是一個編排服務(playbook) 
就是通過定義劇本 來批量啟動一系列的虛擬機,然后一鍵實現一個集群的搭建(利用ansible 來執行)


swift  是一個對象存儲
就是用戶的東西不在是存在某一個目錄下面,因為傳統的目錄下沒有數據庫,而swift (對象存儲 )就專門建一個數據庫
把每一個文件當成一個記錄對象,而不是目錄級別的,就是一個文件變成數據庫里的一條記錄。

img


免責聲明!

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



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