Openstack增加新的compute节点

因为实验室需要增加一台openstack集群的compute节点,所以这里记录一下增加compute节点的过程。集群使用的仍然是FlatDHCP的网络方式。

新增节点的机器依然是双网卡的,这里特别注意一下,不能使用一个以太网卡和一个无线网卡做为双网卡,因为无线网卡是不能桥接到网桥br100上的,否则会收到如下的错误:Error: Failed to add interface: can't add wlan0 to bridge br100: Operation not supported。

新增节点的系统是ubuntu 14.04。这里的操作都是在controller节点上进行,然后用ssh或scp与各节点通信。

一、配置网络环境

1.依然使用双网卡的方式,外网使用的网卡是eth1,内网用eth0,将内网ip设置成10.0.0.31,设置网络的方式我直接在ubuntu图形操作界面上完成,就不再赘述了。
2.在controller节点和compute1节点的/etc/hosts文件里增加compute2的ip地址;在compute2节点的/etc/hosts文件里增加controller节点和compute1节点的ip地址,如下所示。
127.0.0.1 localhost hjy-MS-7673
#127.0.1.1 hjy-MS-7673
10.0.0.11 controller
10.0.0.31 compute1
10.0.0.32 compute2
注意,要把127.0.1.1注释了,然后重启网络服务,使之生效。
3.验证网络环境是否配置正确,通过在各个节点上ping其它节点、再ping www.baidu.com,如果都能ping通,说明网络环境已经配置正确了。
4.注:这里因为要操作多台机器,所以可以在每台机器上安装openssh-server,这样就可以通过ssh远程访问了,使用的命令如下,当然,也可以通过配置,来进行免密码的ssh访问。
sudo apt-get install openssh-server
ssh compute2

二、配置其它环境

这里,主要是要配置NTP服务,数据库服务。
1.使用如下命令安装ntp服务,然后进入/etc/ntp.conf文件,添加server controller,如下图所示
apt-get install ntp
2.使用如下的命令安装数据库服务组件
sudo apt-get install python-mysqldb

三、配置Compute服务

使用如下的python脚本配置compute服务,代码的意思,在以前的博客里已经写了,就不再赘述了。注意要修改ip,我的环境下compute2节点的ip是10.0.0.32。
import os
import ConfigParser

os.system('sudo apt-get install nova-compute-kvm')

keystone_authtoken = {'auth_uri':'http://controller:5000','auth_host':'controller', 'auth_port':'35357', 'auth_protocol':'http', 'admin_tenant_name':'service', 'admin_user': 'nova', 'admin_password':'123456'}

rabbit = {'rpc_backend':'rabbit', 'rabbit_host':'controller', 'rabbit_password':'123456'}

vnc = {'my_ip':'10.0.0.32', 'vnc_enabled':'True', 'vncserver_listen':'0.0.0.0', 'vncserver_proxyclient_address':'10.0.0.32', 'novncproxy_base_url':'http://controller:6080/vnc_auto.html'}

config = ConfigParser.ConfigParser()
os.system('cp /etc/nova/nova.conf /etc/nova/nova.conf.cp') # copy
print "cp /etc/nova/nova.conf done!" 
with open('/etc/nova/nova.conf', 'rw') as cfgfile:
	config.readfp(cfgfile)
	config.set('DEFAULT', 'auth_strategy','keystone')
	config.set('DEFAULT', 'glance_host', 'controller')
	sections = config.sections()
	if 'keystone_authtoken' not in sections:
		config.add_section('keystone_authtoken') 
	if 'database' not in sections:
		config.add_section('database')
	# set [database]
	config.set('database', 'connection', 'mysql://nova:123456@controller/nova')
	for (k,v) in keystone_authtoken.iteritems():
		config.set('keystone_authtoken', k, v)
	for (k,v) in rabbit.iteritems():
		config.set('DEFAULT', k, v)
	for (k,v) in vnc.iteritems():
		config.set('DEFAULT', k, v)
	config.write(open('/etc/nova/nova.conf', 'w'))

output = os.popen("egrep -c '(vmx|svm)' /proc/cpuinfo")
out = output.readlines()
acc_value = out[0].strip()
print "The acc_value is " + acc_value

if (acc_value < 1):
	os.system('cp /etc/nova/nova-compute.conf /etc/nova/nova-compute.conf.cp')
	with open('/etc/nova/nova-compute.conf', 'rw') as cfgfile:
		config.readfp(cfgfile)
		sections = config.sections()
		if 'libvirt' not in sections:
			config.add_section('libvirt')
		config.set('libvirt', 'virt_type', 'qemu')
		config.write(open('/etc/nova/nova-compute.conf', 'w'))	

os.system('rm /var/lib/nova/nova.sqlite')
os.system('service nova-compute restart')
写完这个脚本,可以使用scp命令,将这个文件发送到compute2节点上,命令如下,传送完执行这个python脚本就可以了。
scp -r /home/hjy/work/openstack/config_compute_nod.py openstack@compute2:/home/openstack/openstack_python/compute_service.py

四、配置Network服务

执行如下的python脚本来安装Nova的Network服务即可。具体不再赘述了。注意,要修改public_interface和flat_interface的值,这个两个值都是外网的网卡,需要根据具体情况来定,我使用的是eth1。
import os
import ConfigParser

os.system('sudo apt-get install nova-network nova-api-metadata')

net_set = {'network_api_class':'nova.network.api.API', 'security_group_api':'nova', 'firewall_driver':'nova.virt.libvirt.firewall.IptablesFirewallDriver', 'network_manager':'nova.network.manager.FlatDHCPManager', 'network_size':'254', 'allow_same_net_traffic':'False', 'multi_host':'True', 'send_arp_for_ha':'True', 'share_dhcp_address':'True', 'force_dhcp_release':'True','flat_network_bridge':'br100','flat_interface':'eth1','public_interface':'eth1'}

config = ConfigParser.ConfigParser()
config.readfp(open('/etc/nova/nova.conf', 'rw'))
for k,v in net_set.iteritems():
	config.set('DEFAULT', k, v)
config.write(open('/etc/nova/nova.conf', 'w'))

os.system('service nova-network restart')
os.system('service nova-api-metadata restart')

五、检验是否安装成功

1.使用如下的命令查看kvm是否可用,若不可用,则进入BIOS,将CPU虚拟化的功能开启即可。如果CPU不支持虚拟化的话,就没有办法了。
kvm-ok

2.登陆Dashboard,查看节点是否安装成功。在Dashboard页面的管理员界面上可看到刚才新增的节点。

3.往新增节点上安装镜像,看能否安装成功。
如果一切正常,在装完镜像后,可看到如下图所示的结果,在管理员导航的实例中,可看到,刚才我新建的cirros3运行在我们新添加进来的openstack-1-0主机上,可通过控制台进入该主机。

虚拟机可ping通外网,外网也能ping通虚拟机,证明网络正常。



至此,新增compute节点的工作就完成了,还是比较简单的,可用脚本代替手工完成大部分的工作。我也感受到openstack的松耦合性了。






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值