Tin tức, hướng dẫn và chia sẻ về công nghệ

Openstack Kolla [Phần 2] Hướng dẫn cài đặt Openstack Train multinode bằng Kolla Ansible

Tiếp tục với series hướng dẫn cài đặt OpenStack bằng Kolla Ansible. Ở bài viết lần trước, Cloud365 đã gửi tới các bạn cách cấu hình OpenStack Train theo mô hình all-in-one. Hôm nay chúng mình sẽ mang đến cho các bạn hướng dẫn triển khai OpenStack Train theo mô hình multinode với Kolla Ansible. Nếu đây là lần đầu tiên bạn đọc bài viết này, xin vui lòng tham khảo bài viết phần 1 của Cloud365 về Kolla Ansible tại đây.

Mục lục

  1. Yêu cầu
  2. Cài đặt
    1. Chuẩn bị
    2. Cài đặt kolla-ansible
    3. Cài đặt OpenStack Train
    4. Cài đặt client openstack
  3. Đăng nhập vào horizon

Yêu cầu

Chuẩn bị 2 máy ảo với hệ điều hành CentOS 7 với cấu hình:

Controller:

  • CPU >= 4
  • Ram >= 8GB
  • Disk:
    • vda – OS (>= 50 GB)
    • vdb – Cinder LVM (>= 50 GB)
  • Network: 2 interface
    • Dải MNGT + API + Internal Network: 10.10.11.0/24
    • Dải Provider hay External Network: 10.10.12.0/24

Compute:

  • CPU >= 4
  • Ram >= 8GB
  • Disk:
    • vda – OS (>= 50 GB)
  • Network: 2 interface
    • Dải MNGT + API + Internal Network: 10.10.11.0/24
    • Dải Provider hay External Network: 10.10.12.0/24

Trong bài, VM của mình sẽ có IP:

Controller:

  • eth0: 10.10.11.171
  • eth1: 10.10.12.171

Compute:

  • eth0: 10.10.11.172
  • eth1: 10.10.12.172

Cài đặt

Phần 1. Chuẩn bị

Trên node Controller:

Đặt hostname

hostnamectl set-hostname controller

Cấu hình Network

echo "Setup IP eth0"
nmcli c modify eth0 ipv4.addresses 10.10.11.171/24
nmcli c modify eth0 ipv4.gateway 10.10.11.1
nmcli c modify eth0 ipv4.dns 8.8.8.8
nmcli c modify eth0 ipv4.method manual
nmcli con mod eth0 connection.autoconnect yes

echo "Setup IP eth1"
nmcli c modify eth1 ipv4.addresses 10.10.12.171/24
nmcli c modify eth1 ipv4.method manual
nmcli con mod eth1 connection.autoconnect yes

Update hệ điều hành

yum install -y epel-release
yum update -y

Tắt Firewall, SELinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld

Cấu hình đồng bộ thời gian

timedatectl set-timezone Asia/Ho_Chi_Minh

yum -y install chrony
sed -i 's/server 0.centos.pool.ntp.org iburst/ \
server 1.vn.pool.ntp.org iburst \
server 0.asia.pool.ntp.org iburst \
server 3.asia.pool.ntp.org iburst/g' /etc/chrony.conf
sed -i 's/server 1.centos.pool.ntp.org iburst/#/g' /etc/chrony.conf
sed -i 's/server 2.centos.pool.ntp.org iburst/#/g' /etc/chrony.conf
sed -i 's/server 3.centos.pool.ntp.org iburst/#/g' /etc/chrony.conf

systemctl enable chronyd.service
systemctl restart chronyd.service
chronyc sources

Tạo phân vùng Cinder LVM

pvcreate /dev/vdb
vgcreate cinder-volumes /dev/vdb

Cài đặt môi trường Python, Ansible

yum install -y python-devel libffi-devel gcc openssl-devel libselinux-python
yum install -y vim git byobu
curl -Lo- https://bootstrap.pypa.io/get-pip.py | python

pip install -U pip

pip install ansible

mkdir -p /etc/ansible

txt="[defaults]\nhost_key_checking=False\npipelining=True\nforks=100"
echo -e $txt >> /etc/ansible/ansible.cfg

Tắt máy và snapshot lại

Trên node Compute

Đặt hostname

hostnamectl set-hostname controller

Cấu hình Network

echo "Setup IP eth0"
nmcli c modify eth0 ipv4.addresses 10.10.11.172/24
nmcli c modify eth0 ipv4.gateway 10.10.11.1
nmcli c modify eth0 ipv4.dns 8.8.8.8
nmcli c modify eth0 ipv4.method manual
nmcli con mod eth0 connection.autoconnect yes

echo "Setup IP eth1"
nmcli c modify eth1 ipv4.addresses 10.10.12.172/24
nmcli c modify eth1 ipv4.method manual
nmcli con mod eth1 connection.autoconnect yes

Tắt Firewall, SELinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld

Update hệ điều hành

yum install -y epel-release
yum update -y

Cấu hình đồng bộ thời gian

timedatectl set-timezone Asia/Ho_Chi_Minh

yum -y install chrony
sed -i 's/server 0.centos.pool.ntp.org iburst/ \
server 1.vn.pool.ntp.org iburst \
server 0.asia.pool.ntp.org iburst \
server 3.asia.pool.ntp.org iburst/g' /etc/chrony.conf
sed -i 's/server 1.centos.pool.ntp.org iburst/#/g' /etc/chrony.conf
sed -i 's/server 2.centos.pool.ntp.org iburst/#/g' /etc/chrony.conf
sed -i 's/server 3.centos.pool.ntp.org iburst/#/g' /etc/chrony.conf

systemctl enable chronyd.service
systemctl restart chronyd.service
chronyc sources

Cài đặt môi trường

yum install -y python-devel libffi-devel gcc openssl-devel libselinux-python
yum install -y vim git byobu

Tắt máy và snapshot lại

Phần 2. Cài đặt Kolla Ansible trên node Controller

Tải bản kolla-ansible 9.0.0 (bản dành cho OpenStack Train)

pip install "kolla-ansible==9.0.0"
mkdir -p /etc/kolla

cp /usr/share/kolla-ansible/etc_examples/kolla/* /etc/kolla/

cp /usr/share/kolla-ansible/ansible/inventory/* .

Chỉnh sửa file multinode

Tại section [control], điền IP node Controller

[control]
10.10.11.171 ansible_connection=ssh     ansible_user=root

Tại section [network], điền IP node Controller

[network]
10.10.11.171 ansible_connection=ssh     ansible_user=root

Tại section [monitoring], điền IP node Controller

[monitoring]
10.10.11.171 ansible_connection=ssh     ansible_user=root

Tại section [storage], điền IP các Controller

[storage]
10.10.11.171 ansible_connection=ssh     ansible_user=root

Tại section [deployment], điền IP node kolla ansible (vì ở đây ta cài đặt kolla ansible trên Controller nên ta sẽ để là localhost)

[deployment]
localhost  ansible_connection=ssh

Tại section [compute], điền IP node compute
Lưu ý: Nếu bạn có nhiều hơn 1 node compute thì thêm các dòng đó xuống phía dưới nhé.

[compute]
10.10.11.172 ansible_connection=ssh     ansible_user=root

Kiểm tra

ansible -i multinode all -m ping

Tạo key pair và copy qua các node controller và compute (Nhập pass khi được yêu cầu)

ssh-keygen
ssh-copy-id root@10.10.11.171
ssh-copy-id root@10.10.11.172

Phần 3. Cài đặt Openstack Train bằng Kolla Ansible

Lưu ý: Các thao tác này được thực hiện trên node Controller

Gen password

kolla-genpwd

Cấu hình Kolla Openstack

cp /etc/kolla/globals.yml /etc/kolla/globals.yml.bak
cat << EOF > /etc/kolla/globals.yml
---
kolla_base_distro: "centos"
kolla_install_type: "source"
openstack_release: "train"

# Không sử dụng HA Controller (VIP RabbitMQ, MariaDB v.v)
# enable_haproxy: "no"

# Dải Mngt + admin, internal API
kolla_internal_vip_address: "10.10.11.175"
network_interface: "eth0"

# Dải Mngt Provider
neutron_external_interface: "eth1"

# Cho phép neutron sử dụng dải provider
enable_neutron_provider_networks: "yes"

nova_compute_virt_type: "qemu"

keepalived_virtual_router_id: "60"

enable_cinder: "yes"
enable_cinder_backend_lvm: "yes"
enable_cinder_backup: "no"
EOF

Lưu ý:

  • kolla_internal_vip_address là ip dùng cho VIP, nó sẽ là một IP trống và nằm cùng dải với IP của card mgnt + api
  • Trường hợp cùng dải đã có máy chạy keepalived thì ta sẽ phải đổi tham số router_id trong file cấu hình keepalived bằng cách chỉnh tham số keepalived_virtual_router_id trong file cấu hình kolla.
  • Nếu bạn đang lab trên máy ảo thì bạn cần phải chỉnh tham số nova_compute_virt_type về qemu như cấu hình trên.

Kiểm tra lại cấu hình

cat /etc/kolla/globals.yml | egrep -v '^#|^$'

Sử dụng byobu để chống mất phiên khi thực hiện việc triển khai kolla-ansible để cài OpenStack

byobu

Thực hiện các bước cài đặt OpenStack bằng kolla-ansible.

Khởi tạo môi trường dành cho Openstack Kolla

kolla-ansible -i multinode bootstrap-servers

Kiểm tra thiết lập Kolla Ansible

kolla-ansible -i multinode prechecks

Cài đặt Openstack

kolla-ansible -i multinode deploy

Thiết lập File Environment Openstack

kolla-ansible -i multinode post-deploy

Phần 4. Cài đặt Openstack Client

Cài đặt các gói cần thiết để tạo virtualenv

pip install virtualenv
virtualenv venv

Tạo virtualen có tên là venv

. venv/bin/activate

Cài đặt các gói openstack client trong virtualenv

pip install python-openstackclient python-glanceclient python-neutronclient
source /etc/kolla/admin-openrc.sh

Kiểm tra xem OpenStack hoạt động hay chưa

openstack token issue

Tới đây bạn đã cài Openstack Train thành công

Phần 5. Đăng nhập vào Horizon

Lấy mật khẩu tài khoản Admin

cat /etc/kolla/passwords.yml | grep keystone_admin

Kết quả

keystone_admin_password: rucy2VQN6Nm6Y9uQheBBVhnzX06IRrZVKVFjdcfZ

Tới đây, mật khẩu đăng nhập vào Horizon sẽ là:

admin/rucy2VQN6Nm6Y9uQheBBVhnzX06IRrZVKVFjdcfZ

Truy cập vào horizon với địa chỉ : http://10.10.11.171, nhập thông tin đăng nhập ở trên.

Giao diện đăng nhập horizon

Sau khi thao tác xong, chọn Sign In

Giao diện tổng quan horizon

Như vậy là chúng ta đã cài đặt thành công OpenStack Train bằng Kolla Ansible. Để biết cách sử dụng hệ thống ta vừa thiết lập, mời các bạn tham khảo bài hướng dẫn tạo máy ảo trên cụm OpenStack được cài đặt bằng Kolla Ansible ở phần 3 của series này.

3 Comments

  1. chusotrue

    Pạn ơi cài kolla này các service chạy neutron, mariadb, cinder nhưng vào container cần quyền root thì pass là gì nhỉ ?

    • Nguyễn Văn Thao

      Bạn kiểm tra file /etc/kolla/passwords.yml giúp mình nhé

  2. kiuze

    Ad ơi cho mình hỏi khi mình cài đặt openstack multinote thì khi tạo instance thì instance đó sẽ đi ra ngoài thiết bị vật lý theo eth1 của compute node hay controller node vậy Ad ? Mình cám ơn.

Leave a Reply

Your email address will not be published. Required fields are marked *