本頁內容依照官方安裝文檔進行,具體參見Configure a compute node(nova service)php
因爲咱們在Nova(計算管理)部署配置中使用了mysql數據庫,因此移除本地sqlite數據庫html
sudo rm /var/lib/nova/nova.sqlite
For security reasons, the Linux kernel is not readable by normal users which restricts hypervisor services such as qemu and libguestfs. For details, see this bug. To make the current kernel readable, run:node
sudo dpkg-statoverride --update --add root root 0644 /boot/vmlinuz-$(uname -r)
爲了之後在內核升級vmlinuz從新生成後還能保持可讀狀態,建立一個腳本/etc/kernel/postinst.d/statoverride,包含如下內容:python
#!/bin/sh version="$1" # passing the kernel version is required [ -z "${version}" ] && exit 0 dpkg-statoverride --update --add root root 0644 /boot/vmlinuz-${version}
修改腳本權限mysql
sudo chmod +x /etc/kernel/postinst.d/statoverride
# apt-get install nova-compute-kvm python-guestfs
涉及的配置文件包含兩個:linux
編輯/etc/nova/nova.conf,修改[database]小節中的數據庫鏈接字符串(沒有則添加)以下:sql
[database] connection = mysql://nova:nova_dbpass@controller/nova
這裏假定在控制節點的Nova(計算管理)部署配置時設定的數據庫賬號nova的密碼爲nova_dbpass數據庫
編輯/etc/nova/nova.conf,首先配置文件中的[DEFAULT]小節,指定使用keystone做爲驗證後臺:api
[DEFAULT] ... auth_strategy = keystone
而後配置[keystone_authtoken]小節(沒有則添加),以下bash
[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 = nova_pass
編輯/etc/nova/nova.conf,在[DEFAULT]節中修改成以下
[DEFAULT] ... # rpc_backend = rabbit rabbit_host = controller rabbit_password = RABBIT_PASS
其中"rpc_backend = rabbit"爲官方配中給出,可是咱們在實際配置發現,加入該字段後計算節點的nova服務沒法啓動,提示找不到"rabbit"模塊.所以此處咱們將其註釋掉,服務仍然能夠正常啓動.
編輯/etc/nova/nova.conf,修改其中的[DEFAULT]小節,加入如下內容
[DEFAULT] ... my_ip = 10.14.39.196 vnc_enabled = True vncserver_listen = 0.0.0.0 vncserver_proxyclient_address = 10.14.39.196 novncproxy_base_url = http://controller:6080/vnc_auto.html
其中10.14.39.196爲本計算節點的ip,controller爲/etc/hosts文件中控制節點的主機名
建立虛擬機時須要把映像從glance服務中獲取到計算節點上,因此在/etc/nova/nova.conf文件的[DEFAULT]小節中配置提供glance服務的主機(在咱們的部署中由控制節點提供)
[DEFAULT] ... glance_host = controller
須要根據硬件狀況決定nova-compute使用的虛擬化技術 經過如下命令檢測cpu是否支持硬件虛擬化
$ egrep -c '(vmx|svm)' /proc/cpuinfo
其中vmx爲intel提供的虛擬化技術,svm爲amd提供的對應技術[1],若是上述命令輸出爲0,則該節點硬件不支持硬件虛擬化,須要修改/etc/nova/nova-compute.conf配置文件,指定使用qemu軟件模擬
[libvirt] ... virt_type = qemu
若是輸出大於0,則不須要進行配置,nova默認使用kvm技術[2][3]加速
爲了往後管理方便,在admin的home目錄下建立一個腳本文件nova_compute_restart.sh,內如以下:
#! /bin/bash service nova-compute restart
修改腳本權限
chmod +x nova_compute_restart.sh
執行腳本應用剛剛的配置
sudo ./nova_compute_restart.sh
運行以下命令:
admin@compute1:~$ . admin-openrc.sh admin@compute1:~$ sudo nova-manage host list host zone controller internal compute1 nova
在host中能夠看到本計算節點(compute1)
本頁內容依照官方部署指導[1]進行
有關linux反向路徑過濾參考[2],編輯/etc/sysctl.conf對內核作相應的配置變動以下:
net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0
應用變動
sudo sysctl -p
sudo apt-get install neutron-common neutron-plugin-ml2 neutron-plugin-openvswitch-agent openvswitch-datapath-dkms
注意:Ubuntu installations using Linux kernel version 3.11 or newer do not require the openvswitch-datapath-dkms package.
涉及的配置文件以下
修改/etc/neutron/neutron.conf配置文件中的[DEFAULT]小節,指定使用keystone做爲身份驗證後臺:
[DEFAULT] ... auth_strategy = keystone
而後修改(添加)配置文件中的[keystone_authtoken]小節:
[keystone_authtoken] ... auth_uri = http://controller:5000 auth_host = controller auth_protocol = http auth_port = 35357 admin_tenant_name = service admin_user = neutron admin_password = neutron_pass
這裏假定在Neutron(網絡管理)部署配置中配置的neutron服務的keystone賬號的密碼爲neutron爲neutron_pass
在配置文件/etc/neutron/neutron.conf中的[DEFAULT]小節中添加如下內容
[DEFAULT] ... rpc_backend = neutron.openstack.common.rpc.impl_kombu rabbit_host = controller rabbit_password = rabbit123
這裏假定控制節點上rabbitmq消息隊列服務的默認用戶(guest)使用的密碼時rabbit123
首先修改配置文件中的[DEFAULT]小節中添加如下內容:
[DEFAULT] ... core_plugin = ml2 service_plugins = router allow_overlapping_ips = True
而後修改ml2專有的配置文件,編輯各個小節的相關字段以下:
[ml2] ... type_drivers = gre tenant_network_types = gre mechanism_drivers = openvswitch [ml2_type_gre] ... tunnel_id_ranges = 1:1000 [ovs] ... local_ip = 10.14.39.196 tunnel_type = gre enable_tunneling = True [securitygroup] ... firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver enable_security_group = True
其中[ovs]小節中的local_ip爲用來做爲GRE傳輸隧道的網絡接口所擁有的ip地址,因爲實驗室中的臺式機只有一個網卡,所以咱們將使用與管理網絡相同的接口做爲的GRE隧道所用的網絡接口(即計算節點上的eth0,ip=10.14.39.196).
添加一個名爲br-int(系統默認使用該名,能夠修改)的橋接,實際是對計算節點上各個虛擬網絡的橋接而且有鏈接了br-tun隧道橋接,使得其上的流量可以經過GRE隧道到達其餘的網絡節點[3].
# service openvswitch-switch restart # ovs-vsctl add-br br-int
這個橋接是openswitch橋接,不是linux bridge.
爲了使得nova中的虛擬機使用neutron提供的網絡服務,必須對計算節點上的nova服務也進行配置.
修改配置文件/etc/nova/nova.conf 中的相關字段以下:
[DEFAULT] ... network_api_class = nova.network.neutronv2.api.API neutron_url = http://controller:9696 neutron_auth_strategy = keystone neutron_admin_tenant_name = service neutron_admin_username = neutron neutron_admin_password = neutron_pass neutron_admin_auth_url = http://controller:35357/v2.0 linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver firewall_driver = nova.virt.firewall.NoopFirewallDriver security_group_api = neutron
這裏假定neutron的keystone用戶的密碼爲neutron_pass
爲了方便管理,在admin用戶的home目錄下建立一個腳本:neutron_and_vswitch_restart.sh,內容以下:
#! /bin/bash service openvswitch-switch restart \ && service neutron-plugin-openvswitch-agent restart
修改腳本權限
chmod +x neutron_and_vswitch_restart.sh
執行腳本以應用剛剛修改的各個配置項:
# ./neutron_and_vswitch_restart.sh # ./nova_compute_restart.sh
注意:nova_compute_restart.sh爲在配置Nova計算服務(計算節點)時建立的腳本