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

				******************   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开发的一套开源的软件工具,目标是提供一个通用和稳定的软件库来高效、安全地管理一个节点上的虚拟机,并支持远程操作。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

‘秋歌:

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值