Hướng dẫn cài đặt OpenStack Mitaka trên Ubuntu 14.04

1. Chuẩn bị môi trường

1.1 Mô hình mạng

Mitaka-topo

1.2 Các tham số phần cứng đối với các node

Mitaka-ip-hardware2. Cài đặt trên node controller

Lưu ý:

  • Đăng nhập với quyền root trên tất cả các bước cài đặt.
  • Các thao tác sửa file trong hướng dẫn này sử dụng lệnh vi hoặc vim
  • Password thống nhất cho tất cả các dịch vụ là Welcome123

2.1 Cài đặt các thành phần chung

2.1.1 Thiết lập và cài đặt các gói cơ bản

Chạy lệnh để cập nhật các gói phần mềm

apt-get -y update
  • Thiết lập địa chỉ IP
  • Dùng lệnh vi để sửa file /etc/network/interface với nội dung như sau.
# Interface MGNT
auto eth0
iface eth0 inet static
    address 10.10.10.40
    netmask 255.255.255.0

# Interface EXT
auto eth1
iface eth1 inet static
    address 172.16.69.40
    netmask 255.255.255.0
    gateway 172.16.69.1
    dns-nameservers 8.8.8.8
  • Khởi động lại card mạng sau khi thiết lập IP tĩnh
ifdown -a && ifup -a
  • Kiểm tra kết nối tới gateway và internet sau khi thiết lập xong.
ping 172.16.69.1 -c 4
PING 172.16.69.1 (172.16.69.1) 56(84) bytes of data.
64 bytes from 172.16.69.1: icmp_seq=1 ttl=64 time=0.253 ms
64 bytes from 172.16.69.1: icmp_seq=2 ttl=64 time=0.305 ms
64 bytes from 172.16.69.1: icmp_seq=3 ttl=64 time=0.306 ms
64 bytes from 172.16.69.1: icmp_seq=4 ttl=64 time=0.414 ms

 

ping google.com -c 4
PING google.com (74.125.204.113) 56(84) bytes of data.
64 bytes from ti-in-f113.1e100.net (74.125.204.113): icmp_seq=1 ttl=41 time=58.3 ms
64 bytes from ti-in-f113.1e100.net (74.125.204.113): icmp_seq=2 ttl=41 time=58.3 ms
64 bytes from ti-in-f113.1e100.net (74.125.204.113): icmp_seq=3 ttl=41 time=58.3 ms
64 bytes from ti-in-f113.1e100.net (74.125.204.113): icmp_seq=4 ttl=41 time=58.3 ms
  • Cấu hình hostname
  • Dùng vi sửa file /etc/hostname với tên là controller sh controlle
  • Cập nhật file /etc/hosts để phân giải từ IP sang hostname và ngược lại, nội dung như sau
127.0.0.1      localhost controller
10.10.10.40    controller
10.10.10.41    compute1

2.1.2 Cài đặt NTP

  • Cài gói chrony
apt-get -y install chrony
  •  Sửa file /etc/chrony/chrony.conf
server 1.vn.pool.ntp.org iburst
server 0.asia.pool.ntp.org iburst
server 3.asia.pool.ntp.org iburst
  •  Khởi động lại dịch vụ NTP

2.1.3 Cài đặt repos để cài OpenStack Mitaka

  • Cài đặt gói để cài OpenStack Mitaka
apt-get install software-properties-common -y
add-apt-repository cloud-archive:mitaka -y
  •  Cập nhật các gói phần mềm
apt-get -y update && apt-get -y dist-upgrade
  •  Cài đặt các gói client của OpenStack
apt-get -y install python-openstackclient
  • Khởi động lại máy chủ
init 6
  • Đăng nhập lại và chuyển sang quyền root và thực hiện các bước tiếp theo.

2.1.4 Cài đặt SQL database

  • Cài đặt MariaDB
su -

apt-get -y install mariadb-server python-pymysql
  • Trong quá trình cài MariaDB, hệ thống yêu cầu người dùng nhập mật khẩu vào ô sau

mitaka-mariadb01

Hãy nhập password là Welcome123 để thống nhất cho toàn bộ các bước.

  • Cấu hình cho MariaDB, tạo file /etc/mysql/conf.d/openstack.cnf với nội dung sau
[mysqld]
bind-address = 10.10.10.40
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
character-set-server = utf8
  •  Khởi động lại MariaDB
service mysql restart
  •  Nếu cần thiết thực hiện bước dưới và làm theo để thiết lập cơ bản cho MariaDB
mysql_secure_installation
  •  Đăng nhập bằng tài khoản root vào MariaDB để kiểm tra lại. Sau đó gõ lệnh exit để thoát.
root@controller:~# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 29
Server version: 5.5.47-MariaDB-1ubuntu0.14.04.1 (Ubuntu)

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>
MariaDB [(none)]>
MariaDB [(none)]> exit;

 2.1.5 Cài đặt RabbitMQ

  • Cài đặt gói
apt-get -y install rabbitmq-server

– Cấu hình RabbitMQ, tạo user openstack với mật khẩu là Welcome123

rabbitmqctl add_user openstack Welcome123
  • Gán quyền read, write cho tài khoản openstack trong RabbitMQ
rabbitmqctl set_permissions openstack ".*" ".*" ".*"

 2.1.6 Cài đặt Memcached

  • Cài đặt các gói cần thiết cho memcached
apt-get -y install memcached python-memcache
  •  Dùng vi sửa file /etc/memcached.conf, thay dòng -l 127.0.0.1 bằng dòng dưới.
-l 10.10.10.40
  •  Khởi động lại memcache
service memcached restart

2.2 Cài đặt Keystone

2.2.1 Tạo database cho keystone

Đăng nhập vào MariaDB

mysql -u root -p

Tạo user, database cho keystone

CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost'  IDENTIFIED BY 'Welcome123';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'Welcome123';
FLUSH PRIVILEGES;

exit;

2.2.2 Cài đặt và cấu hình keystone

  • Không cho keystone khởi động tự động sau khi cài sh echo "manual" > /etc/init/keystone.override
  • Cài đặt gói cho keystone
apt-get -y install keystone apache2 libapache2-mod-wsgi

Sao lưu file cấu hình của dịch vụ keystone trước khi chỉnh sửa.

cp /etc/keystone/keystone.conf /etc/keystone/keystone.conf.orig
  •  Dùng lệnh vi để mở và sửa file /etc/keystone/keystone.conf.

+ Trong section [DEFAULT] khai báo dòng

admin_token = Welcome123

+ Trong section [database] thay dòng connection = sqlite:////var/lib/keystone/keystone.db bằng dòng dưới

connection = mysql+pymysql://keystone:Welcome123@10.10.10.40/keystone

+ Sửa file [token]

provider = fernet
  • Đồng bộ database cho keystone
su -s /bin/sh -c "keystone-manage db_sync" keystone

+ Lệnh trên sẽ tạo ra các bảng trong database có tên là keysonte

  • Thiết lập Fernet key
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

2.2.3 Cấu hình apache cho keysonte

  • Dùng vi để mở và sửa file /etc/apache2/apache2.conf. Thêm dòng dưới ngay sau dòng # Global configuration
# Global configuration
ServerName controller
  •  Sử dụng vi để tạo file /etc/apache2/sites-available/wsgi-keystone.conf chứa nội dung dưới
Listen 5000
Listen 35357

<VirtualHost *:5000>
    WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-public
    WSGIScriptAlias / /usr/bin/keystone-wsgi-public
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    <IfVersion >= 2.4>
      ErrorLogFormat "%{cu}t %M"
    </IfVersion>
    ErrorLog /var/log/apache2/keystone.log
    CustomLog /var/log/apache2/keystone_access.log combined

    <Directory /usr/bin>
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
        <IfVersion < 2.4>
            Order allow,deny
            Allow from all
        </IfVersion>
    </Directory>
</VirtualHost>

<VirtualHost *:35357>
    WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-admin
    WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    <IfVersion >= 2.4>
      ErrorLogFormat "%{cu}t %M"
    </IfVersion>
    ErrorLog /var/log/apache2/keystone.log
    CustomLog /var/log/apache2/keystone_access.log combined

    <Directory /usr/bin>
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
        <IfVersion < 2.4>
            Order allow,deny
            Allow from all
        </IfVersion>
    </Directory>
</VirtualHost>
  • Tạo link để cấu hình virtual host cho dịch vụ keysonte trong apache
ln -s /etc/apache2/sites-available/wsgi-keystone.conf /etc/apache2/sites-enabled
  • Khởi động lại apache
service apache2 restart
  • Xóa file database mặc định của keysonte
rm -f /var/lib/keystone/keystone.db

2.3 Tạo endpoint và các service cho keysonte

2.3.1 Khai báo xác thực chung

  • Khai báo sử dụng token để xác thực.
export OS_TOKEN=Welcome123
export OS_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3

2.3.2 Khai báo xác thực chung

  • Tạo các service và endpoint cho keysonte
openstack service create \
  --name keystone --description "OpenStack Identity" identity
  • Tạo các endpoint
openstack endpoint create --region RegionOne identity public http://controller:5000/v3

openstack endpoint create --region RegionOne identity internal http://controller:5000/v3

openstack endpoint create --region RegionOne identity admin http://controller:35357/v3

2.4 Tạo domain, projects, users, and roles

  • Tạo domain
openstack domain create --description "Default Domain" default

+ Lệnh trên có thể gặp lỗi dưới sh root@controller:~# openstack domain create --description "Default Domain"

default Conflict occurred attempting to store domain - Duplicate Entry (HTTP 409) (Request-ID: req-0560b7fb-7af6-4635-8e49-b86b34917be2) root@controller:~# openstack domain list +---------+---------+---------+----------------------------------------------------------------------+ | ID | Name | Enabled | Description | +---------+---------+---------+----------------------------------------------------------------------+ | default | Default | True | Owns users and tenants (i.e. projects) available on Identity API v2. | +---------+---------+---------+----------------------------------------------------------------------+
  • Tạo admin project
openstack project create --domain default  --description "Admin Project" admin
  • Tạo user admin
openstack user create admin --domain default --password Welcome123
  • Tạo role admin
openstack role create admin
  • Gán user admin vào role admin thuộc project admin
openstack role add --project admin --user admin admin
  • Tạo project có tên là service để chứa các user service của openstack
openstack project create --domain default --description "Service Project" service
  • Tạo project tên là demo
openstack project create --domain default --description "Demo Project" demo
  • Tạo user tên là demo
openstack user create demo --domain default --password Welcome123
  •  Tạo role tên là user
openstack role create user
  •  Gán tài khoản demo có role là user vào project demo
openstack role add --project demo --user demo user

2.5 Kiểm chứng lại các bước cài đặt keysonte

  • Vô hiệu hóa cơ chế xác thực bằng token tạm thời trong keysonte bằng cách chỉnh sửa dòng admin_token_auth trong các section [pipeline:public_api], [pipeline:admin_api][pipeline:api_v3] của file /etc/keystone/keystone-paste.ini
  • Bỏ thiết lập trong biến môi trường của OS_TOKENOS_URL bằng lệnh
unset OS_TOKEN OS_URL
  •  Gõ lần lượt 2 lệnh dưới để nhận kết quả trả về
openstack --os-auth-url http://controller:35357/v3 \
--os-project-domain-name default --os-user-domain-name default \
--os-project-name admin --os-username admin token issue

openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name default --os-user-domain-name default \
--os-project-name demo --os-username demo token issue

2.6 Tạo script biến môi trường cho client

  • Tạo file admin-openrc chứa nội dung sau sh cat << EOF > admin-openrc export
OS_PROJECT_DOMAIN_NAME=default export OS_USER_DOMAIN_NAME=default export OS_PROJECT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=Welcome123 export OS_AUTH_URL=http://controller:35357/v3 export OS_IDENTITY_API_VERSION=3 EOF

EOF

  • Tạo file demo-openrc chứa nội dung sau
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=Welcome123
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
  •  Chạy script admin-openrc
source  admin-openrc
  •  Gõ lệnh dưới để kiểm tra biến môi trường ở trên đã chính xác hay chưa
openstack token issue
  • Kết quả sẽ như bên dưới (Lưu ý: giá trị sẽ khác nhau)
root@controller:~# openstack token issue
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field      | Value                                                                                                                                                                                   |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| expires    | 2016-03-26T23:10:06.916201Z                                                                                                                                                             |
| id         | gAAAAABW9wi_SwsD6CLTlvIuBUtXbn1eHH8wTtthyWNzNlG2bKO-9e-VK2fRVdRJ4oKnJ1ceU72KyK_C7N9MSWVlyedP3tQucQW2dzxu_fKl5YeslehFjw-Phv2EhXTOWPc-Ga9l017T8SvwzG4pKWqM7BRNe11GP7DeTBDGVHxFOxXuh7OJ3iE |
| project_id | 38b9ce7973634d83a0390f47f028ed32                                                                                                                                                        |
| user_id    | 100f1bf64d184f22bd6babdd5929696c                                                                                                                                                        |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

3 Cài đặt Glance

Glance là dịch vụ cung cấp các image (các hệ điều hành đã được đóng gói sẵn), các image này sử dụng theo cơ chế template để tạo ra các máy ảo. )

  • Lưu ý: Thư mục chứa các file images trong hướng dẫn này là /var/lib/glance/images/
  • Glance có các thành phần sau:
    • glance-api:
    • glance-registry:
    • Database:
    • Storage repository for image file:
    • Metadata definition service:

3.1 Tạo database và endpoint cho glance

3.1.1 Tạo database cho glance

  • Đăng nhập vào mysql
mysql -u root -p
  • Tạo database và gán các quyền cho user glance trong database
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'Welcome123';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'Welcome123';
FLUSH PRIVILEGES;

exit;

3.1.2 Cấu hình xác thực cho dịch vụ glance

  • Tạo tài khoản glance
openstack user create glance --domain default --password Welcome123
  •  Gán quyền admin và project service cho user glance
openstack role add --project service --user glance admin

+ Kiểm tra lại xem user glance có role là gì sh openstack role list --user glance --project service

  • Tạo dịch vụ có tên là glance
openstack service create --name glance --description "OpenStack Image service" image
  • Tạo các endpoint cho dịch vụ glance
openstack endpoint create --region RegionOne image public http://controller:9292

openstack endpoint create --region RegionOne image internal http://controller:9292

openstack endpoint create --region RegionOne image admin http://controller:9292

3.1.2 Cài đặt các gói và cấu hình cho dịch vụ glance

  • Cài đặt gói glance
apt-get -y install glance
  • Sao lưu các file /etc/glance/glance-api.conf/etc/glance/glance-registry.conf trước khi cấu hình
cp /etc/glance/glance-api.conf /etc/glance/glance-api.conf.orig
cp /etc/glance/glance-registry.conf /etc/glance/glance-registry.conf.orig
  • Sửa các mục dưới đây trong hai file /etc/glance/glance-api.conf/etc/glance/glance-registry.conf

+ Trong section [DEFAULT] thêm hoặc tìm và thay thế dòng cũ bằng dòng dưới để cho phép chế độ ghi log với glance

verbose = true

+ Trong section [database]:

+ Comment dòng

#sqlite_db = /var/lib/glance/glance.sqlite

+ Thêm dòng dưới

connection = mysql+pymysql://glance:Welcome123@controller/glance

+ Trong section [keystone_authtoken] sửa các dòng cũ thành dòng dưới

 

auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = Welcome123

+ Trong section [paste_deploy] khai báo dòng dưới

flavor = keystone

+ Khai báo trong section [glance_store] nơi lưu trữ file image

stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/

+ Trong section [oslo_messaging_rabbit] khai báo dòng dưới để vô hiệu hóa tính năng notification bởi vì nó sẽ được kích hoạt khi cài ceilomter

driver = noop
  • Lưu ý: Nhớ sửa cả file /etc/glance/glance-registry.conf trước khi chạy lệnh dưới.
  • Đồng bộ database cho glance
su -s /bin/sh -c "glance-manage db_sync" glance
  • Khởi động lại dịch vụ Glance
service glance-registry restart
service glance-api restart
  • Xóa file database mặc định trong glance
rm -f /var/lib/glance/glance.sqlite

3.2 Kiểm chứng lại việc cài đặt glance

 

  • Khai báo biến môi trường cho dịch vụ glance
echo "export OS_IMAGE_API_VERSION=2" | tee -a admin-openrc demo-openrc

source admin-openrc
  • Tải file image cho glance
wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
  • Upload file image vừa tải về
openstack image create "cirros" \
 --file cirros-0.3.4-x86_64-disk.img \
 --disk-format qcow2 --container-format bare \
 --public
  • Kiểm tra lại image đã có hay chưa
openstack image list
  • Nếu kết quả lệnh trên hiển thị như bên dưới thì dịch vụ glance đã cài đặt thành công.
root@controller:~# openstack image list
+--------------------------------------+--------+--------+
| ID                                   | Name   | Status |
+--------------------------------------+--------+--------+
| 19d53e24-2985-4f75-bd63-7568a5f2f10f | cirros | active |
+--------------------------------------+--------+--------+
root@controller:~#

4 Cài đặt NOVA (Compute service)

4.1 Tóm tắt về dịch vụ nova trong OpenStack

  • Đây là bước cài đặt các thành phần của nova trên máy chủ Controller
  • nova đảm nhiệm chức năng cung cấp và quản lý tài nguyên trong OpenStack để cấp cho các VM. Trong hướng dẫn nãy sẽ sử dụng KVM làm hypervisor. Nova sẽ tác động vào KVM thông qua libvirt
  • nova có các thành phần như sau:
    • nova-api:
    • nova-api-metadata:
    • nova-compute:
    • nova-schedule:
    • nova-conductor:
    • nova-cert:
    • nova-network:
    • nova-novncproxy:
    • nova-spicehtml5proxy:
    • nova-xvpvncproxy:
    • nova-cert:
    • euca2ools:
    • nova client:
    • The queue:
    • SQL database:

4.2 Cài đặt và cấu hình nova

4.2.1 Tạo database và endpoint cho nova

  • Đăng nhập vào database với quyền root
mysql -uroot -pWelcome123
  • Tạo database
CREATE DATABASE nova_api;
CREATE DATABASE nova;

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'Welcome123';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'Welcome123';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'Welcome123';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'Welcome123';

FLUSH PRIVILEGES;

exit;
  • Khai báo biến môi trường
source admin-openrc
  • Tạo user, phân quyền và tạo endpoint cho dịch vụ nova

+ Tạo user có tên là nova

openstack user create nova --domain default  --password Welcome123

+ Phân quyền cho tài khoản nova

openstack role add --project service --user nova admin

+ Kiểm chứng lại xem tài khoản nova đã có quyền admin hay chưa bằng lệnh dưới sh openstack role list --user nova --project service

+ Tạo service có tên là nova

openstack service create --name nova --description "OpenStack Compute" compute

+ Tạo endpoint

openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1/%\(tenant_id\)s
openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1/%\(tenant_id\)s
openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1/%\(tenant_id\)s
  • Cài đặt các gói cho nova và cấu hình
apt-get -y install nova-api nova-cert nova-conductor nova-consoleauth nova-novncproxy nova-scheduler
  •  Sao lưu file /etc/nova/nova.conf trước khi cấu hình sh cp /etc/nova/nova.conf /etc/nova/nova.conf.orig
  • Sửa file /etc/nova/nova.conf.
  • Lưu ý: Trong trường hợp nếu có dòng khai bao trước đó thì tìm và thay thế, chưa có thì khai báo mới hoàn toàn.

+ Khai báo trong section [api_database] dòng dưới, do section [api_database] chưa có nên ta khai báo thêm

[api_database]
  connection = mysql+pymysql://nova:Welcome123@controller/nova_api

+ Khai báo trong section [database] dòng dưới. Do section [database] chưa có nên ta khai báo thêm.

[database]
  connection = mysql+pymysql://nova:Welcome123@controller/nova
  • Trong section [DEFAULT] :

+ Thay dòng

logdir=/var/log/nova

+ Bằng dòng

log-dir=/var/log/nova

+ Thay dòng

# enabled_apis=ec2,osapi_compute,metadata

+ Bằng dòng

enabled_apis=osapi_compute,metadata

+ Bỏ dòng verbose = True

+ Trong section [DEFAULT] khai báo thêm các dòng sau:

rpc_backend = rabbit
  auth_strategy = keystone
  rootwrap_config = /etc/nova/rootwrap.conf
  #IP MGNT cua node Controller
  my_ip = 10.10.10.40 

  use_neutron = True
  firewall_driver = nova.virt.firewall.NoopFirewallDriver

+ Khai báo trong section [oslo_messaging_rabbit] các dòng dưới. Do section [oslo_messaging_rabbit] chưa có nên ta khai báo thêm.

[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = Welcome123

+ Trong section [keystone_authtoken] khai báo các dòng dưới. Do section [keystone_authtoken] chưa có nên ta khai báo thêm.

[keystone_authtoken]
  auth_uri = http://controller:5000
  auth_url = http://controller:35357
  memcached_servers = controller:11211
  auth_type = password
  project_domain_name = default
  user_domain_name = default
  project_name = service
  username = nova
  password = Welcome123

+ Trong section [vnc] khai báo các dòng dưới để cấu hình VNC điều khiển các máy ảo trên web. Do section [vnc] chưa có nên ta khai báo thêm.

 

 

[vnc]
  vncserver_listen = $my_ip
  vncserver_proxyclient_address = $my_ip

+ Trong section [glance] khai báo dòng để nova kết nối tới API của glance. Do section [glance] chưa có nên ta khai báo thêm.

[glance]
 api_servers = http://controller:9292

+ Trong section [oslo_concurrency] khai báo dòng dưới. Do section [oslo_concurrency] chưa có nên ta khai báo thêm

[oslo_concurrency]
 lock_path = /var/lib/nova/tmp
  • Khai báo thêm section mới [neutron] để nova làm việc với neutron “`sh [neutron] url = http://controller:9696 auth_url = http://controller:35357 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = Welcome123
service_metadata_proxy = True
metadata_proxy_shared_secret = Welcome123
```
  • Tạo database cho nova
su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage db sync" nova

4.2.1 Kết thúc bước cài đặt và cấu hình nova

  • Khởi động lại các dịch vụ của nova sau khi cài đặt & cấu hình nova
service nova-api restart
service nova-cert restart
service nova-consoleauth restart
service nova-scheduler restart
service nova-conductor restart
service nova-novncproxy restart
  • Xóa database mặc định của nova
rm -f /var/lib/nova/nova.sqlite
  • Kiểm tra xem các service của nova hoạt động tốt hay chưa bằng lệnh dưới
openstack compute service list
  • Nếu kết quả lệnh trên không giống dưới đây, hãy xem lại các bước cấu hình ở trên.
+----+--------------------+------------+----------+---------+-------+----------------------------+
| Id | Binary             | Host       | Zone     | Status  | State | Updated At                 |
+----+--------------------+------------+----------+---------+-------+----------------------------+
|  1 | nova-consoleauth   | controller | internal | enabled | up    | 2016-03-27T16:19:42.000000 |
|  2 | nova-scheduler     | controller | internal | enabled | up    | 2016-03-27T16:19:42.000000 |
|  3 | nova-conductor     | controller | internal | enabled | up    | 2016-03-27T16:19:42.000000 |
|  5 | nova-cert          | controller | internal | enabled | up    | 2016-03-27T16:19:42.000000 |
|  6 | nova-osapi_compute | 0.0.0.0    | internal | enabled | down  | None                       |
|  7 | nova-metadata      | 0.0.0.0    | internal | enabled | down  | None                       |
+----+--------------------+------------+----------+---------+-------+----------------------------+

5. Cài đặt NEUTRON(Networking service)

5.1. Giới thiệu về neutron

  • Đây là bước cài đặt NEUTRON trên node Controller
  • Có 2 cơ chế cung cấp network cho các máy ảo là:
    • Provider network (không sử dụng L3 agent trong Neutron)
    • Self-service network:
  • Trong hướng dẫn này sẽ lựa chọn cơ chế Self-service để viết tài liệu
  • Các thành phần của neutron bao gồm:
    • neutron-server:
    • OpenStack Networking plug-ins and agents:
    • Messaging queue:

5.2. Cài đặt và cấu hình neutron

5.2.1 Tạo database và endpoint cho neutron.

  • Tạo database cho neutron

+ Đăng nhập vào neutron

mysql -uroot -pWelcome123

+ Tạo database và phân quyền

  CREATE DATABASE neutron;
  GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'Welcome123';
  GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'Welcome123';

  FLUSH PRIVILEGES;
  exit;
  • Tạo user, endpoint cho dịch vụ neutron
+ Khai báo biến môi trường
source admin-openrc

+ Tạo tài khoản tên là neutron

openstack user create neutron --domain default --password Welcome123

+ Gán role cho tài khoản neutron

openstack role add --project service --user neutron admin

+ Tạo dịch vụ tên là neutron

openstack service create --name neutron --description "OpenStack Networking" network

+ Tạo endpoint tên cho neutron

openstack endpoint create --region RegionOne network public http://controller:9696

openstack endpoint create --region RegionOne network internal http://controller:9696

openstack endpoint create --region RegionOne network admin http://controller:9696
  •  Cài đặt và cấu hình cho dịch vụ neutron. Trong hướng dẫn này lựa chọn cơ chế self-service netwok (có sử dụng L3 agent của neutron).
  • Cài đặt các thành phần cho neutron
apt-get -y install neutron-server neutron-plugin-ml2 \
  neutron-plugin-linuxbridge-agent neutron-l3-agent neutron-dhcp-agent \
  neutron-metadata-agent conntrack
  • Cấu hình cho dịch vụ neutron

+ Sao lưu file cấu hình gốc của neutron

 

cp /etc/neutron/neutron.conf  /etc/neutron/neutron.conf.orig

+ Trong section [database] comment dòng:

# connection = sqlite:////var/lib/neutron/neutron.sqlite

và thêm dòng dưới

```sh
connection = mysql+pymysql://neutron:Welcome123@controller/neutron
```

+ Trong section [DEFAULT] khai báo lại hoặc thêm mới các dòng dưới:

service_plugins = router
 allow_overlapping_ips = True
 rpc_backend = rabbit
 auth_strategy = keystone
 notify_nova_on_port_status_changes = True
 notify_nova_on_port_data_changes = True

+ Trong section [oslo_messaging_rabbit] khai báo hoặc thêm mới các dòng dưới:

rabbit_host = controller
  rabbit_userid = openstack
  rabbit_password = Welcome123

+ Trong section [keystone_authtoken] khai báo hoặc thêm mới các dòng dưới:

auth_uri = http://controller:5000
 auth_url = http://controller:35357
 memcached_servers = controller:11211
 auth_type = password
 project_domain_name = default
 user_domain_name = default
 project_name = service
 username = neutron
 password = Welcome123

+ Trong section [nova] khai báo mới hoặc thêm các dòng dưới

 

 

[nova]
 auth_url = http://controller:35357
 auth_type = password
 project_domain_name = default
 user_domain_name = default
 region_name = RegionOne
 project_name = service
 username = nova
 password = Welcome123
  • Cài đặt và cấu hình plug-in Modular Layer 2 (ML2)
  • Sao lưu file /etc/neutron/plugins/ml2/ml2_conf.ini

 

 

cp /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugins/ml2/ml2_conf.ini.orig
  • Sửa file /etc/neutron/plugins/ml2/ml2_conf.ini

+ Trong section [ml2] khai báo thêm hoặc sửa dòng dưới

type_drivers = flat,vlan,vxlan
  tenant_network_types = vxlan
  mechanism_drivers = linuxbridge,l2population
  extension_drivers = port_security

+ Trong section [ml2_type_flat] khai báo thêm hoặc sửa thành dòng dưới

flat_networks = provider

+ Trong section [ml2_type_vxlan] khai báo thêm hoặc sửa thành dòng dưới

vni_ranges = 1:1000

+ Trong section [securitygroup] khai báo thêm hoặc sửa thành dòng dưới

enable_ipset = True
  • Cấu hình linuxbridge

+ Sao lưu file /etc/neutron/plugins/ml2/linuxbridge_agent.ini

cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini  /etc/neutron/plugins/ml2/linuxbridge_agent.ini.orig

+ Trong section [linux_bridge] khai báo mới hoặc sửa thành dòng

physical_interface_mappings = provider:eth1

+ Trong section [vxlan] khai báo mới hoặc sửa thành dòng

enable_vxlan = True
local_ip = eth0
l2_population = True

+ Trong section [securitygroup] khai báo mới hoặc sửa thành dòng

enable_security_group = True
 firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

Cấu hình l3-agent

+ Sao lưu file /etc/neutron/l3_agent.ini

cp /etc/neutron/l3_agent.ini /etc/neutron/l3_agent.ini.orig

+ Trong section [DEFAULT] khai báo mới hoặc sửa thành dòng dưới:

interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
external_network_bridge =
  • Cấu hình DHCP Agent

+ Sao lưu file /etc/neutron/dhcp_agent.ini gốc

cp  /etc/neutron/dhcp_agent.ini  /etc/neutron/dhcp_agent.ini.orig

+ Trong section [DEFAULT] khai báo mới hoặc sửa thành dòng dưới

interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
  dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
  enable_isolated_metadata = True
  • Cấu hình metadata agent

+ Sao lưu file /etc/neutron/metadata_agent.ini

cp /etc/neutron/metadata_agent.ini /etc/neutron/metadata_agent.ini.orig

+ Trong section [DEFAULT] khai báo mới hoặc sửa thành dòng dưới:

nova_metadata_ip = controller
  metadata_proxy_shared_secret = Welcome123
  • Kết thúc quá trình cài đặt neutron trên controller node
    • Đồng bộ database cho neutron
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \
  --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
  • Khởi động lại nova-api
service nova-api restart
  • Khởi động lại các dịch vụ của neutron
  service neutron-server restart
  service neutron-plugin-linuxbridge-agent restart
  service neutron-dhcp-agent restart
  service neutron-metadata-agent restart
  service neutron-l3-agent restart
  • Xóa database mặc định của neutron
rm -f /var/lib/neutron/neutron.sqlite
  • Kiểm tra lại hoạt động của các dịch vụ trong neutron
root@controller:~# neutron agent-list
  +--------------------------------------+----------------+------------+-------------------+-------+----------------+------------------------+
  | id                                   | agent_type     | host       | availability_zone | alive | admin_state_up | binary                 |
  +--------------------------------------+----------------+------------+-------------------+-------+----------------+------------------------+
  | 0da48098-4f27-46e4-ac91-f2c636814559 | Metadata agent | controller |                   | :-)   | True           | neutron-metadata-agent |
  | 384da2b3-4c14-4436-9c2f-73396499bdbd | DHCP agent     | controller | nova              | :-)   | True           | neutron-dhcp-agent     |
  | e6d2fa51-ff09-44f9-a510-72817f17fb31 | L3 agent       | controller | nova              | :-)   | True           | neutron-l3-agent       |
  +--------------------------------------+----------------+------------+-------------------+-------+----------------+------------------------+

 

Đặng Đình Công

Mình là Đặng Đình Công. Công việc hiện tại của mình là quản trị viên hệ thống mạng máy tính. Hiện tại mình đang học, nghiên cứu và làm việc về mảng hệ thống và bảo mật Microsoft, Cisco, ảo hóa VMware,... Blog được lập ra với phương diện cá nhân nên chắc sẽ không tránh khỏi nhiều sai sót. Mong được sự góp ý của tất cả các bạn.

You may also like...