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