Triển khai nền tảng đám mây OpenStack all-in-one với Kolla

Kolla là một dự án của OpenStack nhằm tự động hóa quá trình triển khai. Nó sử dụng Docker để xây dựng các image dịch vụ và quản lý container, cùng với Ansible để tự động hóa việc triển khai và quản lý môi trường.

Kolla bao gồm hai thành phần chính:

  • Kolla: Cung cấp các image dịch vụ OpenStack chất lượng sản xuất.
  • Kolla-Ansible: Thực hiện triển khai tự động dựa trên các image do Kolla tạo ra.

Yêu cầu phần cứng máy chủ

Để triển khai OpenStack all-in-one, bạn cần một máy ảo hoặc máy vật lý có cấu hình tối thiểu như sau:

  • RAM: 12GB
  • Ổ cứng: 200GB (chia 4GB cho swap, 200MB cho boot, phần còn lại cho thư mục gốc)
  • CPU: Hỗ trợ ảo hóa (VT-x/AMD-V)
  • Mạng: Hai card mạng ở chế độ cầu nối (bridge mode)

Chuẩn bị hệ thống

Thực hiện các bước sau trên hệ điều hành máy chủ:

Cài đặt các gói cần thiết

Đảm bảo bash-completion, vim và net-tools đã được cài đặt để hỗ trợ dòng lệnh.

[root@openstack ~]# yum -y install bash-completion vim net-tools

Tắt SELinux và Firewall

Vô hiệu hóa SELinux và dịch vụ firewall để tránh xung đột.

[root@openstack ~]# vi /etc/selinux/config
# Thay đổi SELINUX=enforcing thành SELINUX=disabled

[root@openstack ~]# setenforce 0
[root@openstack ~]# getenforce
Permissive

[root@openstack ~]# systemctl disable firewalld && systemctl stop firewalld
[root@openstack ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)

Cấu hình tệp hosts

Thiết lập địa chỉ IP và hostname cho máy chủ OpenStack.

[root@openstack ~]# vim /etc/hosts
192.168.1.100 openstack.local openstack

Cài đặt kho lưu trữ EPEL

Thêm kho lưu trữ EPEL để có thể cài đặt các gói bổ sung.

[root@openstack ~]# yum -y install epel-release

Cấu hình card mạng

Thiết lập địa chỉ IP tĩnh cho card mạng quản lý và đảm bảo card mạng ngoài không có IP.

Bảng cấu hình mạng:

Địa chỉ IP Loại mạng Card mạng Vai trò trong OpenStack
192.168.1.100 Bridge (Cầu nối) eth0 Mạng quản lý nội bộ OpenStack (truy cập giao diện Horizon)
Không có IP Bridge (Cầu nối) eth1 Mạng ngoài (kết nối với neutron br-ex, cho phép máy ảo ra internet)

Cấu hình chi tiết:

# Cấu hình card mạng quản lý (ví dụ: eth0)
[root@openstack ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8

# Cấu hình card mạng ngoài (ví dụ: eth1)
[root@openstack ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
NAME=eth1
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes

# Khởi động lại dịch vụ mạng
[root@openstack ~]# systemctl restart network

Cài đặt các gói Python và Pip

Cài đặt các thư viện Python cần thiết và cấu hình Pip để sử dụng kho lưu trữ nhanh hơn.

[root@openstack ~]# yum -y install python-devel libffi-devel gcc openssl-devel git python-pip

# Cấu hình Pip để sử dụng kho lưu trữ của Alibaba Cloud
[root@openstack ~]# mkdir ~/.pip
[root@openstack ~]# tee ~/.pip/pip.conf << EOF
[global]
index-url=https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
EOF

# Nâng cấp Pip
[root@openstack ~]# pip install -U pip

Cài đặt Kolla-Ansible

Cài đặt Ansible

Sử dụng Pip để cài đặt Ansible, tránh xung đột với các gói PyYAML.

[root@openstack ~]# pip install ansible

Cài đặt Kolla-Ansible

Cài đặt Kolla-Ansible bằng Pip.

[root@openstack ~]# pip install kolla-ansible

Xử lý lỗi PyYAML: Nếu gặp lỗi không thể gỡ cài đặt PyYAML cũ, chạy lệnh sau:

[root@openstack ~]# pip install PyYAML --ignore-installed PyYAML
[root@openstack ~]# pip install kolla-ansible

Sao chép tệp cấu hình

Sao chép các tệp cấu hình mẫu của Kolla-Ansible.

[root@openstack ~]# cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/
[root@openstack ~]# cp /usr/share/kolla-ansible/ansible/inventory/* /etc/kolla/

Các tệp cấu hình chính:

  • all-in-one: Cấu hình cho triển khai OpenStack một nút.
  • multinode: Cấu hình cho triển khai OpenStack nhiều nút.
  • globals.yml: Tệp tùy chỉnh các tham số triển khai OpenStack.
  • passwords.yml: Tệp chứa mật khẩu cho các dịch vụ OpenStack.

Tùy chỉnh cấu hình Kolla-Ansible

Tạo tệp mật khẩu

Tạo tệp mật khẩu mặc định và đặt mật khẩu cho giao diện Horizon.

[root@openstack ~]# kolla-genpwd
[root@openstack ~]# vim /etc/kolla/passwords.yml
# Thay đổi mật khẩu keystone_admin_password, ví dụ:
keystone_admin_password: YourSecurePassword123

Chỉnh sửa /etc/kolla/globals.yml

Tùy chỉnh các tham số quan trọng cho việc triển khai OpenStack.

[root@openstack ~]# vim /etc/kolla/globals.yml
# Chọn bản phân phối cơ sở (ví dụ: centos)
kolla_base_distro: "centos"

# Chọn phương thức cài đặt (binary hoặc source)
kolla_install_type: "source"

# Phiên bản OpenStack (ví dụ: stein)
openstack_release: "stein"

# Địa chỉ IP nội bộ của OpenStack (VIP nếu có HA)
kolla_internal_vip_address: "192.168.1.100"

# Card mạng quản lý nội bộ
network_interface: "eth0"

# Card mạng ngoài của Neutron (phải không có IP)
neutron_external_interface: "eth1"

# Tắt High Availability (HA)
enable_haproxy: "no"

# Tắt Cinder (lưu trữ khối)
# enable_cinder: "no"

# Loại ảo hóa cho Nova Compute
nova_compute_virt_type: "qemu"

Triển khai OpenStack với Kolla-Ansible

Thiết lập SSH key

Tạo SSH key và sao chép public key lên máy chủ để Kolla-Ansible có thể kết nối.

[root@openstack ~]# ssh-keygen
[root@openstack ~]# ssh-copy-id root@openstack

Cấu hình tệp danh sách máy chủ (Inventory)

Chỉnh sửa tệp /etc/kolla/all-in-one để trỏ đến máy chủ OpenStack.

[root@openstack ~]# vim /etc/kolla/all-in-one
# Thay thế localhost bằng tên hoặc IP của máy chủ OpenStack
[control]
openstack.local

[network]
openstack.local

[compute]
openstack.local

[storage]
openstack.local

[monitoring]
openstack.local

[deployment]
openstack.local

Bắt đầu triển khai

Thực hiện các bước triển khai lần lượt.

# 1. Cài đặt các gói phụ thuộc và Docker (bootstrap-servers)
[root@openstack ~]# kolla-ansible -i /etc/kolla/all-in-one bootstrap-servers

# 2. Kiểm tra cấu hình hệ thống (prechecks)
[root@openstack ~]# kolla-ansible -i /etc/kolla/all-in-one prechecks

# 3. Cấu hình Docker để sử dụng registry mirror (tùy chọn, giúp tải image nhanh hơn)
[root@openstack ~]# tee /etc/docker/daemon.json << 'EOF'
{
  "registry-mirrors": ["https://your-docker-mirror.com"]
}
EOF
[root@openstack ~]# systemctl daemon-reload
[root@openstack ~]# systemctl restart docker

# 4. Tải các image OpenStack về máy chủ
[root@openstack ~]# kolla-ansible -i /etc/kolla/all-in-one pull

# 5. Triển khai các dịch vụ OpenStack
[root@openstack ~]# kolla-ansible -i /etc/kolla/all-in-one deploy

# 6. Thực hiện các tác vụ sau triển khai và tạo tệp cấu hình truy cập
[root@openstack ~]# kolla-ansible -i /etc/kolla/all-in-one post-deploy

Truy cập OpenStack Dashboard

Sau khi triển khai thành công, bạn có thể truy cập giao diện Horizon tại địa chỉ:

http://192.168.1.100

Tên đăng nhập: admin

Mật khẩu: Đã đặt trong /etc/kolla/passwords.yml.

Xử lý sự cố

Lỗi tải image

Nếu gặp lỗi khi tải image, hãy kiểm tra lại openstack_release trong globals.yml. Thử đổi sang một phiên bản OpenStack cũ hơn hoặc mới hơn.

Lỗi trong quá trình triển khai

Nếu lệnh deploy báo lỗi, hãy thử chạy lại lệnh. Đôi khi vấn đề có thể tự giải quyết.

Dịch vụ không khởi động sau khi khởi động lại máy chủ

Trong trường hợp một số container (ví dụ: nova-scheduler) không tự khởi động lại, bạn có thể cần khởi động thủ công:

[root@openstack ~]# docker ps -a | grep nova-scheduler
# Tìm CONTAINER ID của container bị lỗi
[root@openstack ~]# docker restart 

Thẻ: openstack Kolla kolla-ansible docker ansible

Đăng vào ngày 8 tháng 6 lúc 18:12