2015年1月29日 星期四

三主機安裝 OpenStack Juno(三):安裝 Compute Node

前言:
這系列的文章只是我自己的 OpenStack Juno 安裝記錄,不過基本上內容都跟官方文件一樣
只是把一些細節整合起來,讓安裝時的設定稍微沒那麼繁瑣一點
但如果想知道各個步驟的原因以及用途,建議還是應該回頭去看看官方的安裝文件。


安裝環境的硬體、網路配置介紹請參考前文:三主機安裝 OpenStack Juno(一):安裝環境介紹


    系統環境與前置工作
    1. 作業系統為 Ubuntu 14.04.1。
    2. 將會在 Compute Node 上安裝的各元件版本如下(使用 apt-show-versions):

      nova-compute:all/trusty-updates 1:2014.2.1-0ubuntu1~cloud0 uptodate
      sysfsutils:amd64/trusty 2.1.0+repack-3ubuntu1 uptodate
    3. 編輯 /etc/hosts 設定節點的別名,將其他節點在 Administrative Network 的位址皆記錄下來。
      192.168.18.1 controller
      192.168.18.2 network



    Compute Node 安裝流程
    安裝 Nova Compute
    1. 安裝 Nova Compute 套件
      apt-get install nova-compute sysfsutils
    2. 編輯 /etc/nova/nova.conf 設定檔:
      (1) 設定資料庫連線資訊。假設 Nova 存取 MariaDB 的帳號是 nova、密碼是 qwer、連線位址是 controller、資料庫名稱是 nova。
      (2) 依據在 Controller Node 的 Message Service 設定的資料,編輯 Nova Controller 存取 RabbitMQ 的相關設定。
      (3) 設定跟 Controller Node 連接的管理介面 IP,以及讓其他連線透過 VNC 服務或者 Proxy 連上 Nova 的相關規則。
      (4) 設定 Nova 的網路使用 Neutron 的驅動程式,同時設定存取 Neutron 資料庫的方法。
      [DEFAULT]
      # Message service
      rpc_backend = rabbit
      rabbit_host = controller
      rabbit_port = 5672
      rabbit_use_ssl = false
      rabbit_userid = opnovacompute
      rabbit_password = nova
      rabbit_virtual_host = openstack
      
      # Authentication
      auth_strategy = keystone
      
      # Address of management network
      my_ip = 192.168.18.3
      
      # Enable remote console access with proxy that listens only management network
      vnc_enabled = True
      vncserver_listen = 0.0.0.0
      vncserver_proxyclient_address = 192.168.18.3
      novncproxy_base_url = http://controller:6080/vnc_auto.html
      
      # Network configuration
      network_api_class = nova.network.neutronv2.api.API
      security_group_api = neutron
      linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver
      firewall_driver = nova.virt.firewall.NoopFirewallDriver
      
      [keystone_authtoken]
      auth_uri = http://controller:5000/v2.0
      identity_uri = http://controller:35357
      admin_tenant_name = service
      admin_user = nova
      admin_password = qwer
      
      [glance]
      host = controller
      
      [neutron]
      url = http://controller:9696
      auth_strategy = keystone
      admin_auth_url = http://controller:35357/v2.0
      admin_tenant_name = service
      admin_username = neutron
      admin_password = qwer
    3. 刪除安裝套件自動建立的 !SQLite 資料庫檔,避免 Nova 誤用。
      rm -f /var/lib/nova/nova.sqlite
    4. 重新啟動 Nova 服務。
      service nova-compute restart
    安裝 Neutron Network 相關套件
    這部份動作的目的,是要讓 Nova 在運作時,要將 VM 的網路操作轉送給 Neutron。 網路設定的前置工作
    1. 編輯 /etc/sysctl.conf,設定系統的網路參數。
      net.ipv4.conf.all.rp_filter=0
      net.ipv4.conf.default.rp_filter=0
    2. 使變更生效。
      sysctl -p
    安裝 Neutron 元件
    1. 安裝 Network 元件。
      apt-get install neutron-plugin-ml2 neutron-plugin-openvswitch-agent
    2. 編輯 /etc/neutron/neutron.conf,設定網路相關參數:
      (1) 設定 Neutron 使用 flat 與 generic routing encapsulation (GRE) 型態提供網路服務。
      (2) 設定 flat 網路為外部網路的提供者。
      (3) 以 Open vSwitch 套件作為提供網路服務的驅動程式。
      (4) 啟用 security group 以及 OVS 提供的 iptables 防火牆等。
      (5) 設定 Tunnel 的介面 IP。
      [DEFAULT]
      ...
      rpc_backend = rabbit
      rabbit_host = controller
      rabbit_port = 5672
      rabbit_use_ssl = false
      rabbit_userid = opnovanetwork
      rabbit_password = nova
      rabbit_virtual_host = openstack
      
      auth_strategy = keystone
      
      # Enable the Modular Layer 2 (ML2) plug-in, router service, and overlapping IP addresses
      core_plugin = ml2
      service_plugins = router
      allow_overlapping_ips = True
      
      [keystone_authtoken]
      ...
      auth_uri = http://controller:5000/v2.0
      identity_uri = http://controller:35357
      admin_tenant_name = service
      admin_user = neutron
      admin_password = qwer
    3. 編輯 /etc/neutron/plugins/ml2/ml2_conf.ini,以設定 Modular Layer 2 plug-in,透過 Open vSwitch (OVS) 建立虛擬網路:
      [ml2]
      ...
      type_drivers = flat,gre
      tenant_network_types = gre
      mechanism_drivers = openvswitch
      
      [ml2_type_gre]
      ...
      tunnel_id_ranges = 1:1000
      
      [securitygroup]
      ...
      enable_security_group = True
      enable_ipset = True
      firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
      
      [ovs]
      local_ip = 192.168.17.3
      enable_tunneling = True
      
      [agent]
      tunnel_types = gre



    4. 重新啟動相關服務。
      service openvswitch-switch restart && service nova-compute restart && service neutron-plugin-openvswitch-agent restart



    參考資料: 1、nova.conf - configuration options

    沒有留言: