雲計算 | 私有云服务搭建

雲計算基本實驗環境預備.

!!📢說明!!

  • 🚫 1,請勿轉載本文相關內容到中國大陸任何媒體社交平臺. .
  • 📢 2,所有實驗均運行與Arch Linux系統之上,並非Windows,但和Windows步驟是一樣的. .
  • 📢 3,實驗中使用Vmware-Workstation虛擬化軟體,軟件來源自互聯網. .
  • 📢 3,實驗中用到的所有軟體,均會採用最新版本,遵循Arch理念. .

🔧實驗準備.

  • 🔧 準備好 基本實驗環境搭建..

實驗環境

👀 實驗環境.

設備名稱主機名稱接口對應關係IPV4地址虛擬網卡網段
虛擬機1controllereth0->vmnet21
eth1->vmnet25
192.168.21.21
10.10.21.21
vmnet21:
192.168.21.0/24
虛擬機2computeeth0->vmnet21
eth1->vmnet25
192.168.21.25
10.10.21.25
vmnet25:
10.10.21.25.0/24

之後所有都有這張表格,所以請記住,你在哪,你是誰,你在幹什麼.

RUN

Yum 源配置[0.2 分]

在我們的準備工作中已經配置好了光盤yum源,所以,接下來的操作將很簡單.

安裝Apache
查看Apache網站目錄
鏈接CD-ROM到Apache網站目錄
瀏覽器查看

controller主機執行.

yum makecache               #建立軟體包緩存.
yum search httpd            #搜索apache軟體包.
yum install -y httpd        #安裝apache.
ln -sf /mnt/cdrom/ /var/www/html/xx         #連接CD-ROM至網站目錄.

compute主機配置http yum源碼
compute主機執行.

cat << "EOF" >/etc/yum.repos.d/controller_http.repo
[controller-http]
name=controller http repo
baseurl=http://controller/xx
gpgcheck=0
enabled=1
EOF

yum clean all &&yum makecache       #清除所有軟體緩存,建立新的軟體緩存.

配置无秘钥 ssh[0.2 分]

生成ssh密鑰對
測試免密執行命令

所有主機執行.

ssh-keygen -t rsa -b 4096 -f /root/.ssh/id_rsa -N '' -q

拷貝ssh公鑰到雙方虛擬機.

controller主機執行.

ssh-copy-id root@compute

compute主機執行.

ssh-copy-id root@controller

基础安装[0.2 分]

10.43.3.222 將提供yum源服務,時間不應該浪費在找東西上.

iaas-repo http://10.43.3.222:521
配置yum源
所有主機執行.

cat << "EOF" >/etc/yum.repos.d/iaas-repo.repo           #添加iaas-repo軟件倉庫.
[iaas-repo]
name=iaas http repo
baseurl=http://10.43.3.222:521/iaas-repo/
gpgcheck=0
enabled=1

scp /etc/yum.repos.d/iaas-repo.repo root@compute:/etc/yum.repos.d/      #配置compute節點iaas-repo源.
yum clean all &&yum makecache           #清除軟體包緩存,建立新的軟體緩存.

安裝openstack-iaas軟體
所有主機執行.

yum clean all &&yum makecache           #清除軟體包緩存,建立新的軟體緩存.
yum search openstack-iaas               #搜索openstack-iaas軟體包.
yum install -y openstack-iaas           #安裝openstack-iaas軟體.

修改完畢的配置文件
配置openrc.sh文件以及環境變量.

sed -i 's/^#//g' /etc/openstack/openrc.sh            #去掉/etc/openstack/openrc.sh文件所有開頭的^符號.

編輯openrc.sh文件,Controller主機執行.

#--------------------system Config--------------------##
#Controller Server Manager IP. example:x.x.x.x
HOST_IP=192.168.21.21

#Controller HOST Password. example:000000
HOST_PASS=000000

#Controller Server hostname. example:controller
HOST_NAME=controller

#Compute Node Manager IP. example:x.x.x.x
HOST_IP_NODE=192.168.21.25        #compute節點ip.

#Compute HOST Password. example:000000
HOST_PASS_NODE=whoami            #compute節點root密碼.

#Compute Node hostname. example:compute
HOST_NAME_NODE=compute

#--------------------Chrony Config-------------------##
#Controller network segment IP.  example:x.x.0.0/16(x.x.x.0/24)
network_segment_IP=192.168.21.0/24        #controller節點和compute節點的網段.

#--------------------Rabbit Config ------------------##
#user for rabbit. example:openstack
RABBIT_USER=openstack

#Password for rabbit user .example:000000
RABBIT_PASS=000000

#--------------------MySQL Config---------------------##
#Password for MySQL root user . exmaple:000000
DB_PASS=000000

#--------------------Keystone Config------------------##
#Password for Keystore admin user. exmaple:000000
DOMAIN_NAME=demo
ADMIN_PASS=000000
DEMO_PASS=000000

#Password for Mysql keystore user. exmaple:000000
KEYSTONE_DBPASS=000000

#--------------------Glance Config--------------------##
#Password for Mysql glance user. exmaple:000000
GLANCE_DBPASS=000000

#Password for Keystore glance user. exmaple:000000
GLANCE_PASS=000000

#--------------------Placement Config----------------------##
#Password for Mysql placement user. exmaple:000000
PLACEMENT_DBPASS=000000

#Password for Keystore placement user. exmaple:000000
PLACEMENT_PASS=000000

#--------------------Nova Config----------------------##
#Password for Mysql nova user. exmaple:000000
NOVA_DBPASS=000000

#Password for Keystore nova user. exmaple:000000
NOVA_PASS=000000

#--------------------Neutron Config-------------------##
#Password for Mysql neutron user. exmaple:000000
NEUTRON_DBPASS=000000

#Password for Keystore neutron user. exmaple:000000
NEUTRON_PASS=000000

#metadata secret for neutron. exmaple:000000
METADATA_SECRET=000000

#External Network Interface. example:eth1
INTERFACE_NAME=eth1        #第二個網絡接口的名稱.

#External Network The Physical Adapter. example:provider
Physical_NAME=provider

#First Vlan ID in VLAN RANGE for VLAN Network. exmaple:101
minvlan=1

#Last Vlan ID in VLAN RANGE for VLAN Network. example:200
maxvlan=1000

#--------------------Cinder Config--------------------##
#Password for Mysql cinder user. exmaple:000000
CINDER_DBPASS=000000

#Password for Keystore cinder user. exmaple:000000
CINDER_PASS=000000

#Cinder Block Disk. example:md126p3
BLOCK_DISK=sdb1            #compute節點的第2塊磁盤的第一個分區.

#--------------------Swift Config---------------------##
#Password for Keystore swift user. exmaple:000000
SWIFT_PASS=000000

#The NODE Object Disk for Swift. example:md126p4.
OBJECT_DISK=sdb2        #compute節點的第2塊磁盤的第二個分區.

#The NODE IP for Swift Storage Network. example:x.x.x.x.
STORAGE_LOCAL_NET_IP=192.168.21.25   #compute節點的第二個卡的網段.

#--------------------Trove Config----------------------##
#Password for Mysql trove user. exmaple:000000
TROVE_DBPASS=000000

#Password for Keystore trove user. exmaple:000000
TROVE_PASS=000000

#--------------------Heat Config----------------------##
#Password for Mysql heat user. exmaple:000000
HEAT_DBPASS=000000

#Password for Keystore heat user. exmaple:000000
HEAT_PASS=000000

#--------------------Ceilometer Config----------------##
#Password for Gnocchi ceilometer user. exmaple:000000
CEILOMETER_DBPASS=000000

#Password for Keystore ceilometer user. exmaple:000000
CEILOMETER_PASS=000000

#--------------------AODH Config----------------##
#Password for Mysql AODH user. exmaple:000000
AODH_DBPASS=000000

#Password for Keystore AODH user. exmaple:000000
AODH_PASS=000000

#--------------------ZUN Config----------------##
#Password for Mysql ZUN user. exmaple:000000
ZUN_DBPASS=000000

#Password for Keystore ZUN user. exmaple:000000
ZUN_PASS=000000

#Password for Keystore KURYR user. exmaple:000000
KURYR_PASS=000000

#--------------------OCTAVIA Config----------------##
#Password for Mysql OCTAVIA user. exmaple:000000
OCTAVIA_DBPASS=000000

#Password for Keystore OCTAVIA user. exmaple:000000
OCTAVIA_PASS=000000

#--------------------Manila Config----------------##
#Password for Mysql Manila user. exmaple:000000
MANILA_DBPASS=000000

#Password for Keystore Manila user. exmaple:000000
MANILA_PASS=000000

#The NODE Object Disk for Manila. example:md126p5.
SHARE_DISK=sdb3        #compute節點的共享磁盤,第而塊磁盤的第三個分區.

#--------------------Cloudkitty Config----------------##
#Password for Mysql Cloudkitty user. exmaple:000000
CLOUDKITTY_DBPASS=000000

#Password for Keystore Cloudkitty user. exmaple:000000
CLOUDKITTY_PASS=000000

#--------------------Barbican Config----------------##
#Password for Mysql Barbican user. exmaple:000000
BARBICAN_DBPASS=000000

#Password for Keystore Barbican user. exmaple:000000
BARBICAN_PASS=000000

將配置好的openrc.sh文件scp到compute節點,Controller主機執行.

scp /etc/openstack/openrc.sh root@compute:/etc/openstack/openrc.sh  

編輯openrc.sh文件的快捷方式.

sed -i 's/PASS=/PASS=000000/g' /etc/openstack/openrc.sh

compute節點添加磁盤並分區,compute主機執行.
compute主機添加虛擬磁盤
compute主機添加虛擬磁盤
compute主機添加虛擬磁盤
compute主機添加虛擬磁盤
compute主機添加虛擬磁盤
compute主機添加虛擬磁盤
查看compute主機新添加的磁盤
轉換磁盤格式爲GPT
建立30G的分區
在建立30G的分區
最後在建立30G的分區,記得w保存
查看分區

compute節點fdisk流程.

fdisk -l
fdisk /dev/sdb
g               #轉換磁盤爲GPT格式.
n               #建立分區.
                #回車,選擇默認的起始地址.
1               #第1個分區.
+30G            #增加30G空間.
n               #建立分區.
                #回車,選擇默認的起始地址.
2               #第2個分區.
                #回車,選擇默認的起始地址.
+30G            #增加30G空間.
n               #建立分區.
3               #第3個分區.
                #回車,選擇默認的起始地址.
+30G            #增加30G空間.
w               #保存更改.

题目5数据库安装与调优 [0.5 分]

在接下來的操作中我們需要修改一些腳本,因爲iaas-pre-host.sh腳本中有我們之前搞過的東西,
我們精準預判了它的預判!

修改iaas-pre-host腳本
執行iaas-pre-host腳本
重啓之後的2臺主機motd內容

所有主機執行.

iaas-pre-host.sh        #執行iaas-pre-host.sh腳本,<>
systemctl reboot        #重啓.

controller主機執行.

iaas-install-mysql.sh

查看mariadb  memcached  rabbitmq 服務狀態

systemctl status mariadb.service rabbitmq-server.service memcached.service     #查看mariadb  memcache  rabbitmq 服務狀態.

1.设置数据库支持大小写;

數據庫支持大小寫
controller主機執行.

lower_case_table_names=1
sed -i '/\[mysqld\]/a\lower_case_table_names=1' /etc/my.cnf       #快捷方法.

2.设置数据库缓存 innodb 表的索引,数据,插入数据时的缓冲为 4G;

數據庫innodb表緩衝4G
controller主機執行.

innodb_buffer_pool_size=4G
sed -i '/\[mysqld\]/a\innodb_log_buffer_size=4G' /etc/my.cnf      #快捷方法.

3.设置数据库的 log buffer 为 64MB;

數據庫log buffer爲64MB
睡覺不著的時候常常想,那些走過的路,自己的決定,如果可以重來,會不會做出不同的選擇.
結果越發的睡不着了,於是我不再想着自己的事情,我用力想着別人的事情,便很快入睡了.
不要糾結這個配置了64MB顯示4G的問題.

controller主機執行.

innodb_log_buffer_size=64M
sed -i '/\[mysqld\]/a\innodb_log_buffer_size=64M' /etc/my.cnf     #快捷方法.

4.设置数据库的 redo log 大小为 256MB;

數據庫redo log爲256MB
controller主機執行.

innodb_log_file_size=256M
sed -i '/\[mysqld\]/a\innodb_log_file_size=256M' /etc/my.cnf      #快捷方法.

5.设置数据库的 redo log 文件组为 2。

數據庫redo log文件組爲2
controller主機執行.

innodb_log_files_in_group=2
sed -i '/\[mysqld\]/a\innodb_log_files_in_group=2' /etc/my.cnf    #快捷方法.

mariadb 配置完畢

6.修改 Memcached 的相关配置,将内存占用大小设置为 512MB,调整最大连接数参数为2048

查找Memecached的配置文件
查看Memecached的服務單元
修改Memecached的服務單元
controller主機執行.

vim /usr/lib/systemd/system/memcached.service       #編輯memcached服務單元

ExecStart=/usr/bin/memcached -p ${PORT} -u ${USER} -m 512 -c 2048 $OPTIONS      #修改ExecStart

查看Memecached服務狀態
controller主機執行.

#重新載入systemd的服務單元,重啓memcached服務並查看memcached服務狀態.
systemctl daemon-reload &&systemctl restart memcached.service &&systemctl status memcached.service

7.调整 Memcached 的数据摘要算法(hash)为 md5;

配置Memecached服務單元
controller主機執行.

vim /usr/lib/systemd/system/memcached.service       #編輯memcached服務單元

ExecStart=/usr/bin/memcached -p ${PORT} -u ${USER} -m 512 -c 2048 -I 1m $OPTIONS      #修改ExecStart

查看Memecached服務單元狀態
controller主機執行.

#重新載入systemd的服務單元,重啓memcached服務並查看memcached服務狀態.
systemctl daemon-reload &&systemctl restart memcached.service &&systemctl status memcached.service

Keystone 服务安装与使用[0.5 分]

在控制节点上安装 Keystone 服务.

執行iaas-install-keystone.sh腳本
controller主機執行.

iaas-install-keystone.sh                #安裝Keystone服務.
. /etc/keystone/admin-openrc.sh         #生效keystone環境變量.

獲取keystone token信息

openstack token issue                   #獲取keystone toke信息.

创建 OpenStack 域 210Demo

創建Openstack域210Demo
controller主機執行.

. /etc/keystone/admin-openrc.sh         #生效keystone環境變量.
openstack domain create --description "210Demo Domain" 210Demo      #創建 openstack 域 210Demo

创建项目:在域210Demo中创建Engineering和Production项目.

在域210Demo中创建Engineering和Production项目
controller主機執行.

#在域210Demo中创建Engineering项目
openstack project create --domain 210Demo --description "Engineering Project" Engineering       

#在域210Demo中创建Production项目.
openstack project create --domain 210Demo --description "Production Project" Production 

创建组:在域210Demo中创建Devops组.

在域210Demo中创建Devops组.
controller主機執行.

openstack group create --domain 210Demo Devops      #在域210Demo中创建Devops组.

添加用户:在组Devops中添加Robert用户并指定其角色.

创建一个名为Robert的用户,密碼000000,并将其添加到Engineering项目中
controller主機執行.

#创建一个名为Robert的用户,(密碼000000),并将其添加到Engineering项目中.
openstack user create --domain 210Demo --project Engineering --password-prompt Robert

分配member和admin角色
controller主機執行.

openstack role add --project Engineering --user Robert member       #分配member角色.
openstack role add --project Engineering --user Robert admin        #分配admin角色.

配置email 地址为 Robert@lab.example.com

配置email 地址为 Robert@lab.example.com
controller主機執行.

#配置email 地址为 Robert@lab.example.com
openstack user set --email Robert@lab.example.com Robert
openstack user show Robert      #查看Robert用戶信息.

George用户是Engineering项目的用户(member),email:George@lab.example.com

George用户配置..
controller主機執行.

openstack user create --domain 210Demo --project Engineering --password-prompt --email George@lab.example.com George

George用户配置..
controller主機執行.

#爲用戶George在項目Engineering中添加member角色,並使用member角色的id去添加.
openstack role add --project Engineering --user George $(openstack role show member -c id -f value)

#查看項目信息.
openstack project show Engineering

#查看用戶信息.
openstack user show George

來聽一首歌吧,快速emo

William用户是Production项目的用户(member)与管理员(admin),email:William@lab.example.com

建立William用户email: William@lab.example.com
controller主機執行.

#建立William用户email: William@lab.example.com.
openstack user create --domain 210Demo --project Production --password-prompt --email William@lab.example.com William

将其添加到 Production 项目中作为管理员和成员
将其添加到 Production 项目中作为管理员和成员
controller主機執行.

#将其添加到 Production 项目中作为管理员和成员.
openstack role add --project Production --user William $(openstack role show admin -c id -f value)
openstack role add --project Production --user William $(openstack role show member -c id -f value)

John用户是Production项目的用户(member),email:John@lab.example.com

controller主機執行.
建立John用户,email: John@lab.example.com

#建立John用户,email: John@lab.example.com.
openstack user create --domain 210Demo --project Production --password-prompt --email John@lab.example.com John

将其添加到 Production 项目中作为成员

#将其添加到 Production 项目中作为成员
openstack role add --project Production --user John $(openstack role show member -c id -f value)

Glance 安装与使用[0.5 分]

在控制节点上安装 Glance 服务。上传镜像至平台,并设置镜像启动的要求参数.

安装Glance服务
controller主機執行.

iaas-install-glance.sh

上传镜像并重名为 deploy-vmlinuz

http://10.43.3.222:523 里面有镜像,帮你们找好了
安装wget
下载coreos_production_pxe.vmlinuz镜像
controller主機執行.

yum -y install wget             #安装wget.
#下载coreos_production_pxe.vmlinuz 镜像.
wget http://10.43.3.222:523/coreos_production_pxe.vmlinuz

上传coreos_production_pxe.vmlinuz镜像
controller主機執行.

#上传镜像.
openstack image create deploy-vmlinuz --container-format aki < coreos_production_pxe.vmlinuz

Nova 安装与优化[0.5 分]

在控制节点和计算节点上分别安装 Nova 服务.

controller主機執行iaas-install-placement.sh腳本
controller主機執行(请按照顺序执行).

iaas-install-placement.sh

controller主機執行iaas-install-nova-controller.sh腳本

iaas-install-nova-controller.sh

compute主機執行iaas-install-nova-compute.sh腳本
compute主機執行(请按照顺序执行).

iaas-install-nova-compute.sh

修改调度器规则采用缓存调度器,缓存主机信息,提升调度时间。

controller主機編輯/etc/nova/nova.conf文件更改調度器
controller主機執行.

vim /etc/nova/nova.conf     #編輯配置文件,修改4501行爲
driver=caching_scheduler

Neutron 安装[0.2 分]

在控制和计算节点上正确安装 Neutron 服务。

controller主機執行iaas-install-neutron-controller.sh腳本
controller主機執行(请按照顺序执行).

iaas-install-neutron-controller.sh

compute主機執行iaas-install-neutron-controller.sh腳本
compute主機執行(请按照顺序执行).

iaas-install-neutron-compute.sh

Dashboard 安装[0.5 分]

controller主機安裝Dashboard
Web Dashboard
controller主機執行.

iaas-install-dashboard.sh

将Dashboard中的Django数据修改为存储在文件中

Web Dashboard
controller主機執行.

#快捷命令.
sed -i 's/backends.cache/backends.file/g' /etc/openstack-dashboard/local_settings

使得登录 Dashboard 平台的时候不需要输入域名

修改配置
controller主機執行.

vim  /etc/openstack-dashboard/local_settings # 修改爲 
ALLOWED_HOSTS = ['*', '192.168.21.21', 'controller']

登陸 查看Dashboard

Swift 安装[0.5 分]

在控制节点和计算节点上分别安装 Swift 服务.

controller節點執行iaas-install-swift-controller.sh腳本
controller主機執行.

iaas-install-swift-controller.sh

compute節點執行iaas-install-swift-compute.sh腳本
compute主機執行.

iaas-install-swift-compute.sh

创建一个名叫examcontainer的容器.

創建一個名爲examcontainer的容器
controller主機執行.

swift post examcontainer        #创建容器.
openstack container list        #查看創建的容器.

上傳cirros鏡像到examcontainer容器.

http://10.43.3.222:523
下載cirros鏡像
controller主機執行.

#下載鏡像.
wget http://10.43.3.222:523/cirros-0.3.4-x86_64-disk.img

上傳cirros鏡像
controller主機執行.

#上傳到examcontainer容器中,分段存放,每一段大小为 10M
swift upload -S 10M examcontainer cirros-0.3.4-x86_64-disk.img

Cinder 创建硬盘[0.5 分]

在控制节点和计算节点分别安装 Cinder 服务.

controller主機執行iaas-install-cinder-controller.sh腳本
controller主機執行.

iaas-install-cinder-controller.sh

在進行接下來的操作前,請讓我們聽首歌,一曲<<千千闋歌>>獻給大家.

查看cinder-volumes邏輯卷大小
劃分/dev/sdb 5G磁盤空間
compute主機執行.

fdisk /dev/sdb
n           #新建分區.
            #回車,選擇默認的起始地址.
+5G         #增加5G容量.
p           #查看分區情況.
w           #保存修改.

調整後的/dev/sdb1磁盤空間
接下來我們執行iaas-install-cinder-compute.sh腳本
compute主機執行iaas-install-cinder-compute.sh腳本
compute主機執行.

iaas-install-cinder-compute.sh

对块存储进行扩容操作

對cinder-volumes擴容5G空間

vgextend cinder-volumes /dev/sdb4
vgs

配置主机禁 ping [0.5 分]

配置controller主機防ping,並測試
controller主機執行.

#配置內核參數禁止ping
echo 'net.ipv4.icmp_echo_ignore_all = 1' >>/etc/sysctl.conf
sysctl -p       #生效內核參數配置.

   转载规则


《雲計算 | 私有云服务搭建》Bad-BoY 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
雲計算 | 私有云服务运维 雲計算 | 私有云服务运维
雲計算基本實驗環境預備.!!📢說明!!🚫 1,請勿轉載本文相關內容到中國大陸任何媒體社交平臺. .📢 2,所有實驗均運行與Arch Linux系統之上,並非Windows,但和Windows步驟是一樣的. .📢 3,實驗中使用Vmw
2023-11-11
下一篇 
雲計算 | 環境準備 雲計算 | 環境準備
雲計算基本實驗環境預備.!!📢說明!!🚫 1,請勿轉載本文相關內容到中國大陸任何媒體社交平臺. .📢 2,所有實驗均運行與Arch Linux系統之上,並非Windows,但和Windows步驟是一樣的. .📢 3,實驗中使用Vmw
2023-10-29
  目录