當前位置:網站首頁>解讀先電2.4 iaas-install-nova-{controller,comput}.sh 脚本

解讀先電2.4 iaas-install-nova-{controller,comput}.sh 脚本

2022-01-27 08:34:50 ‘秋歌:

				******************   iaas-install-nova-controller.sh		**********************	
#!/bin/bash								#聲明解釋器類型
source /etc/xiandian/openrc.sh			#生效環境變量  
source /etc/keystone/admin-openrc.sh	#生效admin用戶脚本
#mysql nova mysql		#創建數據庫 nova, nova_api, nova_cell0

mysql -uroot -p$DB_PASS -e "create database IF NOT EXISTS nova ;"
mysql -uroot -p$DB_PASS -e "create database IF NOT EXISTS nova_api ;"
mysql -uroot -p$DB_PASS -e "create database IF NOT EXISTS nova_cell0 ;"
#創建數據庫用戶並賦予數據庫用戶權限

mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY '$NOVA_DBPASS' ;"
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '$NOVA_DBPASS' ;"

mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY '$NOVA_DBPASS' ;"
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY '$NOVA_DBPASS' ;"

mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY '$NOVA_DBPASS' ;"
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY '$NOVA_DBPASS' ;"

#nova user role service endpoint

openstack user create --domain $DOMAIN_NAME --password $NOVA_PASS nova		 				#創建nova用戶 
openstack role add --project service --user nova admin		 								#將admin 權限賦予 nova 用戶

openstack service create --name nova --description "OpenStack Compute" compute			 	#創建nova計算服務 

openstack endpoint create --region RegionOne compute public http://$HOST_NAME:8774/v2.1		 #創建nova計算服務組件的外部的 API endpoint
openstack endpoint create --region RegionOne compute internal http://$HOST_NAME:8774/v2.1		#創建nova計算服務組件的內部的 API endpoint
openstack endpoint create --region RegionOne compute admin http://$HOST_NAME:8774/v2.1		 #創建nova計算服務組件的admin API endpoint
openstack user create --domain $DOMAIN_NAME --password $NOVA_PASS placement
openstack role add --project service --user placement admin
openstack service create --name placement --description "Placement API" placement
openstack endpoint create --region RegionOne placement public http://$HOST_NAME:8778
openstack endpoint create --region RegionOne placement internal http://$HOST_NAME:8778
openstack endpoint create --region RegionOne placement admin http://$HOST_NAME:8778

#nova install		#安裝nova的核心組件
yum install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler openstack-nova-placement-api -y
#/etc/nova/nova.conf			#配置默認服務信息

crudini --set /etc/nova/nova.conf DEFAULT enabled_apis  osapi_compute,metadata								# 停止使用EC2 API
crudini --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:$NOVA_DBPASS@$HOST_NAME			# 配置RabbitMQ的消息隊列訪問
crudini --set /etc/nova/nova.conf DEFAULT my_ip $HOST_IP													# 配置控制節點管理IP地址
crudini --set /etc/nova/nova.conf DEFAULT use_neutron  True													# 定義nova支持neutron網絡服務組件	
crudini --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver				# 關閉nova計算服務組件的防火牆功能
crudini --set /etc/nova/nova.conf api auth_strategy keystone												# 配置認證方式為keystone
#配置數據庫連接

crudini --set /etc/nova/nova.conf api_database connection  mysql+pymysql://nova:$NOVA_DBPASS@$HOST_NAME/nova_api
crudini --set /etc/nova/nova.conf database connection  mysql+pymysql://nova:$NOVA_DBPASS@$HOST_NAME/nova

#配置keystone認證

crudini --set /etc/nova/nova.conf keystone_authtoken auth_url  http://$HOST_NAME:5000/v3			# 配置管理員訪問端口
crudini --set /etc/nova/nova.conf keystone_authtoken	memcached_servers $HOST_NAME:11211			# 配置緩存服務端口
crudini --set /etc/nova/nova.conf keystone_authtoken auth_type password								# 配置認證類型為密碼認證
crudini --set /etc/nova/nova.conf keystone_authtoken project_domain_name $DOMAIN_NAME				# 配置租戶域名	
crudini --set /etc/nova/nova.conf keystone_authtoken user_domain_name $DOMAIN_NAME					# 配置用戶域名
crudini --set /etc/nova/nova.conf keystone_authtoken project_name service							# 配置租戶名
crudini --set /etc/nova/nova.conf keystone_authtoken username nova									# 配置用戶名
crudini --set /etc/nova/nova.conf keystone_authtoken password $NOVA_PASS							# 配置keystone認證密碼
#配置VNC(虛擬網絡控制臺)

crudini --set /etc/nova/nova.conf vnc enabled true							# 配置VNC開機自啟
crudini --set /etc/nova/nova.conf vnc server_listen $HOST_IP				# 配置VNC代理使用控制節點的管理IP地址
crudini --set /etc/nova/nova.conf vnc server_proxyclient_address $HOST_IP	# 使用主機地址為數據網絡IP地址
crudini --set /etc/nova/nova.conf glance api_servers http://$HOST_NAME:9292				# 配置glance鏡像服務地址
crudini --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp			# 配置lock(文件鎖)的文件路徑
#配置placement

crudini --set /etc/nova/nova.conf placement os_region_name RegionOne
crudini --set /etc/nova/nova.conf placement project_domain_name $DOMAIN_NAME
crudini --set /etc/nova/nova.conf placement project_name service
crudini --set /etc/nova/nova.conf placement auth_type password
crudini --set /etc/nova/nova.conf placement user_domain_name $DOMAIN_NAME
crudini --set /etc/nova/nova.conf placement auth_url http://$HOST_NAME:5000/v3
crudini --set /etc/nova/nova.conf placement username placement
crudini --set /etc/nova/nova.conf placement password $NOVA_PASS
#/etc/httpd/conf.d/00-nova-placement-api.conf		#修改placement的apache配置文件00-nova-placement-api.conf

echo " " >> /etc/httpd/conf.d/00-nova-placement-api.conf
echo "<Directory /usr/bin>" >> /etc/httpd/conf.d/00-nova-placement-api.conf
echo " <IfVersion >= 2.4>" >> /etc/httpd/conf.d/00-nova-placement-api.conf
echo " Require all granted" >> /etc/httpd/conf.d/00-nova-placement-api.conf
echo " </IfVersion>" >> /etc/httpd/conf.d/00-nova-placement-api.conf
echo " <IfVersion < 2.4>" >> /etc/httpd/conf.d/00-nova-placement-api.conf				#apache版本
echo " Order allow,deny" >> /etc/httpd/conf.d/00-nova-placement-api.conf		#允許apache訪問/usr/bin目錄;否則/usr/bin/placement-api將不允許被訪問
echo " Allow from all" >> /etc/httpd/conf.d/00-nova-placement-api.conf			#允許apache訪問
echo " </IfVersion>" >> /etc/httpd/conf.d/00-nova-placement-api.conf
echo "</Directory>" >> /etc/httpd/conf.d/00-nova-placement-api.conf

#httpd restart
systemctl restart httpd

#su nova mysql		#將nova和nova_api的信息同步到數據庫

su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
su -s /bin/sh -c "nova-manage db sync" nova
nova-manage cell_v2 list_cells					#驗證Nova數據庫是否創建成功
#nova start service 
systemctl enable openstack-nova-api.service  openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
systemctl start openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service

——Cell
1. 概念:nova為了增加橫向擴展以及分布式、大規模(地理比特置級別)部署的能力,同時又不增加數據庫和消息中間件的複雜度,引入了cell的概念,並引入了nova-cell服務。

2.作用

               1. 解决OpenStack的擴展性和規模瓶頸

               2. 每個Cell都有自己獨立的DB和AMQP,不與其他模塊共用DB和AMQP,解决了大規模環境中DB和AMQP的瓶頸問題;

               3. Cell實現了樹形結構(通過消息路由)和分級調度(過濾算法和權重算法),Cell之間通過RPC通訊,解决了擴展性問題;

——nova-Placement:跟踪資源(比如計算節點,存儲資源池,網絡資源池等)的使用情况,提供自定義資源的能力,為分配資源提供服務。
——nova-API:負責接收和響應外部請求。
——nova-Scheduler:負責調度虛擬機所在的物理機。
——nova-Conductor:計算節點訪問數據庫的中間件。
——nova-Consoleauth:用於控制臺的授權認證。
——nova-Novncproxy:VNC 代理,用於顯示虛擬機操作終端。由於雲主機instance所在的compute一般在內網運行,而instance的VNC端口是綁定在compute的IP地址上的。外網的用戶,需要訪問instance的VNC,就需要使用Proxy代理**

用戶訪問VNC,一般采用兩種方式的客戶端,分別對應兩種Proxy:
1.支持web socket的瀏覽器,如Chrome、Firefox等,使用NoVNC
2.java客戶端代理,使用Xvpvncproxy






				******************   iaas-install-nova-comput.sh	******************		
#!/bin/bash
source /etc/xiandian/openrc.sh

#nova-compute install
yum install openstack-nova-compute -y

#/etc/nova/nova.conf
crudini --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata
crudini --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:$NOVA_DBPASS@$HOST_NAME
crudini --set /etc/nova/nova.conf DEFAULT my_ip $HOST_IP_NODE
crudini --set /etc/nova/nova.conf DEFAULT use_neutron True
crudini --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver

crudini --set /etc/nova/nova.conf api auth_strategy keystone

crudini --set /etc/nova/nova.conf keystone_authtoken auth_url http://$HOST_NAME:5000/v3
crudini --set /etc/nova/nova.conf keystone_authtoken memcached_servers $HOST_NAME:11211
crudini --set /etc/nova/nova.conf keystone_authtoken auth_type password
crudini --set /etc/nova/nova.conf keystone_authtoken project_domain_name $DOMAIN_NAME
crudini --set /etc/nova/nova.conf keystone_authtoken user_domain_name $DOMAIN_NAME
crudini --set /etc/nova/nova.conf keystone_authtoken project_name service
crudini --set /etc/nova/nova.conf keystone_authtoken username nova
crudini --set /etc/nova/nova.conf keystone_authtoken password $NOVA_PASS

#配置VNC以啟用遠程終端的訪問
crudini --set /etc/nova/nova.conf vnc enabled True
crudini --set /etc/nova/nova.conf vnc server_listen 0.0.0.0											# 不監聽任何端口
crudini --set /etc/nova/nova.conf vnc server_proxyclient_address $HOST_IP_NODE						# 使用主機地址為數據網絡IP地址
crudini --set /etc/nova/nova.conf vnc novncproxy_base_url http://$HOST_IP:6080/vnc_auto.html		# 代理服務地址

crudini --set /etc/nova/nova.conf glance api_servers http://$HOST_NAME:9292

crudini --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp

crudini --set /etc/nova/nova.conf placement os_region_name RegionOne
crudini --set /etc/nova/nova.conf placement project_domain_name $DOMAIN_NAME
crudini --set /etc/nova/nova.conf placement project_name service
crudini --set /etc/nova/nova.conf placement auth_type password
crudini --set /etc/nova/nova.conf placement user_domain_name $DOMAIN_NAME
crudini --set /etc/nova/nova.conf placement auth_url http://$HOST_NAME:5000/v3
crudini --set /etc/nova/nova.conf placement username placement
crudini --set /etc/nova/nova.conf placement password $NOVA_PASS
#檢查本機是否支持硬件加速

virt_num=`egrep -c '(vmx|svm)' /proc/cpuinfo`
if [ $virt_num = '0' ];then
        crudini --set /etc/nova/nova.conf libvirt virt_type  qemu
fi
systemctl enable libvirtd.service openstack-nova-compute.service
systemctl restart libvirtd.service openstack-nova-compute.service
#添加計算節點

ssh $HOST_IP << EOF
source /etc/xiandian/openrc.sh
source /etc/keystone/admin-openrc.sh
openstack compute service list --service nova-compute
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
exit
EOF

——nova-compute:運行在計算節點上,負責創建、删除、啟動、暫停和關閉虛擬機等功能。

——Libvirt是由Redhat開發的一套開源的軟件工具,目標是提供一個通用和穩定的軟件庫來高效、安全地管理一個節點上的虛擬機,並支持遠程操作。

版權聲明
本文為[‘秋歌:]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/01/202201270834500450.html

隨機推薦