Định cấu hình Dịch vụ mạng OpenStack (Neutron). Ví dụ này không phải là Cài đặt tất cả trong một như ở đây mà là Định cấu hình môi trường 3 nút như sau. Neutron cần một phần mềm plugin, có thể chọn nó từ một số phần mềm. Ví dụ này chọn plugin ML2. (nó sử dụng Open vSwitch trong phần phụ trợ) ----- ------- ------------------------------------------ ------- ------------- ------------ | | | eth0|10.0.0.30 eth0|10.0.0.50 eth0|10.0.0.51 ----------- ------------- ----------- -- --------- ------------- ----------- | [ Nút điều khiển ] | | [ Nút mạng ] | | [ Nút tính toán ] | | | | | | | | MariaDB RabbitMQ | | Mở vSwitch | | Libvirt | | Memcached httpd | | Đại lý L2 | | Điện toán Nova | | Keystone Glance | | Đại lý L3 | | Mở vSwitch | | API Nova | | Đại lý siêu dữ liệu | | Đại lý L2 | | Máy chủ neutron | | | | | | Đại lý siêu dữ liệu | | | | | -------------- -------------- ---- ------------------- |
[1] | Cài đặt dịch vụ neutron trên Network Node. |
# install from Pike, EPEL [root@network ~]# yum --enablerepo=centos-openstack-pike,epel -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-openvswitch
|
[2] | Định cấu hình làm nút Mạng. |
[root@network ~]# mv /etc/neutron/neutron.conf /etc/neutron/neutron.conf.org
[root@network ~]#
vi /etc/neutron/neutron.conf # create new [DEFAULT] core_plugin = ml2 service_plugins = router auth_strategy = keystone state_path = /var/lib/neutron allow_overlapping_ips = True # RabbitMQ connection info transport_url = rabbit://openstack:password@10.0.0.30 # Keystone auth info [keystone_authtoken] auth_uri = http://10.0.0.30:5000 auth_url = http://10.0.0.30:35357 memcached_servers = 10.0.0.30:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = neutron password = servicepassword [oslo_concurrency] lock_path = $state_path/lock chmod 640 /etc/neutron/neutron.conf [root@network ~]# chgrp neutron /etc/neutron/neutron.conf
[root@network ~]#
vi /etc/neutron/l3_agent.ini # line 17: add
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
[root@network ~]#
vi /etc/neutron/dhcp_agent.ini # line 17: add
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
# line 32: uncomment dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq # line 41: uncomment and change enable_isolated_metadata = True
[root@network ~]#
vi /etc/neutron/metadata_agent.ini # line 23: uncomment and specify Nova API server nova_metadata_host = 10.0.0.30
# line 35: uncomment and specify any secret key you like metadata_proxy_shared_secret = metadata_secret
# line 247: uncomment and specify Memcache server memcache_servers = 10.0.0.30:11211
[root@network ~]#
vi /etc/neutron/plugins/ml2/ml2_conf.ini # line 114: add ( it's OK with no value for "tenant_network_types" (set later if need) ) [ml2]
type_drivers = flat,vlan,gre,vxlan
tenant_network_types = mechanism_drivers = openvswitch,l2population extension_drivers = port_security # line 247: uncomment and add enable_security_group = True firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
# end line: uncomment enable_ipset = True |
[3] | Nếu SELinux được bật, hãy thay đổi chính sách như sau. |
[root@network ~]# setsebool -P neutron_can_network on [root@network ~]# setsebool -P haproxy_connect_any on [root@network ~]# setsebool -P daemons_enable_cluster_mode on
[root@network ~]#
vi neutron-net_pol.te # create new module neutron-net_pol 1.0; require { type sysfs_t; type http_port_t; type neutron_t; type neutron_tmp_t; type neutron_var_lib_t; type hostname_exec_t; type ovsdb_port_t; type openvswitch_t; type openflow_port_t; type haproxy_t; class file { execute execute_no_trans getattr open read create unlink write }; class dir { add_name remove_name search write }; class sock_file { create write unlink getattr setattr }; class tcp_socket { name_bind name_connect }; class filesystem getattr; class unix_stream_socket connectto; } #============= neutron_t ============== allow neutron_t neutron_tmp_t:sock_file create; allow neutron_t http_port_t:tcp_socket name_bind; allow neutron_t sysfs_t:filesystem getattr; allow neutron_t neutron_tmp_t:sock_file { create write getattr unlink setattr }; allow neutron_t openflow_port_t:tcp_socket name_bind; #============= openvswitch_t ============== allow openvswitch_t neutron_t:file { getattr open read }; allow openvswitch_t ovsdb_port_t:tcp_socket name_bind; allow openvswitch_t hostname_exec_t:file { execute execute_no_trans getattr open read }; allow openvswitch_t neutron_t:dir search; #============= haproxy_t ============== allow haproxy_t neutron_t:unix_stream_socket connectto; allow haproxy_t neutron_var_lib_t:dir { add_name remove_name search write }; allow haproxy_t neutron_var_lib_t:file { create getattr open read unlink write }; allow haproxy_t neutron_var_lib_t:sock_file write; allow haproxy_t sysfs_t:filesystem getattr; checkmodule -m -M -o neutron-net_pol.mod neutron-net_pol.te checkmodule: loading policy configuration from neutron-net_pol.te checkmodule: policy configuration loaded checkmodule: writing binary representation (version 17) to neutron-net_pol.mod [root@network ~]# semodule_package --outfile neutron-net_pol.pp --module neutron-net_pol.mod [root@network ~]# semodule -i neutron-net_pol.pp |
[4] | Khởi động dịch vụ neutron. |
[root@network ~]# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini [root@network ~]# systemctl start openvswitch [root@network ~]# systemctl enable openvswitch [root@network ~]# ovs-vsctl add-br br-int [root@network ~]# for service in dhcp-agent l3-agent metadata-agent openvswitch-agent; do systemctl start neutron-$service systemctl enable neutron-$service done |