Kolla安装OpenStack添加新节点

文章目录
  1. 1. 前言
  2. 2. 新节点配置
    1. 2.1. 网络设置
    2. 2.2. python
    3. 2.3. 安装docker
    4. 2.4. 密钥登录
  3. 3. 控制节点配置
  4. 4. 测试使用
  5. 5. 后记

前言

《Kolla安装OpenStack多节点》一文中,使用kolla安装了三个节点的openstack。

因为实验需要,现在需要再添加一个计算节点。那么问题来了,怎样在不破坏现有环境的基础上,添加一个新的计算节点呢?本文就来研究一下。

新节点配置

网络设置

在新添加的计算节点上,执行以下操作:

1、切换到root用户
sudo -i

2、vim /etc/network/interfaces,设置网卡为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.56.113
netmask 255.255.255.0

auto eth1
iface eth1 inet dhcp

auto eth2
iface eth2 inet manual
up ifconfig $IFACE 0.0.0.0 up
up ifconfig $IFACE promisc

3、启用网卡
ifup eth2

4、修改/etc/hosts,添加:

1
2
3
4
192.168.56.110  controller
192.168.56.111 network
192.168.56.112 compute
192.168.56.113 compute2

python

安装python
apt -y install python-simplejson
不安装的话,在使用ansible的时候会报错/bin/sh: 1: /usr/bin/python: not found。

安装docker

1、安装docker
apt -y install docker.io

2、为docker和kolla创建配置文件

1
2
mkdir -p /etc/systemd/system/docker.service.d
vim /etc/systemd/system/docker.service.d/kolla.conf

修改为:

1
2
[Service]
MountFlags=shared

3、重启docker

1
2
systemctl daemon-reload
systemctl restart docker

4、查看docker信息
docker info

密钥登录

1、在控制节点将公钥写入新的计算节点

1
ssh-copy-id -i .ssh/id_rsa.pub -p 22 voidking@192.168.56.11

2、在新的计算节点把voidking用户添加进sudo免密,方便以后的操作
sudo vim /etc/sudoers,添加

1
voidking ALL = NOPASSWD: ALL

控制节点配置

1、配置multinode文件
vim multinode,如下修改:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# line 3, change
[control]
#192.168.56.110 ansible_ssh_user=voidking ansible_ssh_pass=voidking ansible_sudo=voidking ansible_sudo_pass=voidking ansible_become_user=root ansible_become_pass=voidking ansible_become=true
# line 12, change
[network]
#192.168.56.111 ansible_ssh_user=voidking ansible_ssh_pass=voidking ansible_sudo=voidking ansible_sudo_pass=voidking ansible_become_user=root ansible_become_pass=voidking ansible_become=true
# line 17, change
[inner-compute]
#192.168.56.112 ansible_ssh_user=voidking ansible_ssh_pass=voidking ansible_sudo=voidking ansible_sudo_pass=voidking ansible_become_user=root ansible_become_pass=voidking ansible_become=true
192.168.56.113 ansible_ssh_user=voidking ansible_ssh_pass=voidking ansible_sudo=voidking ansible_sudo_pass=voidking ansible_become_user=root ansible_become_pass=voidking ansible_become=true
# line 21, change
[external-compute]
#192.168.56.112 ansible_ssh_user=voidking ansible_ssh_pass=voidking ansible_sudo=voidking ansible_sudo_pass=voidking ansible_become_user=root ansible_become_pass=voidking ansible_become=true
192.168.56.113 ansible_ssh_user=voidking ansible_ssh_pass=voidking ansible_sudo=voidking ansible_sudo_pass=voidking ansible_become_user=root ansible_become_pass=voidking ansible_become=true
# line 28, comment
[monitoring]
#monitoring01
# line 36, comment
[storage]
#storage01

2、测试连通
ansible -i multinode -m ping all

3、拷贝kolla.tar到新计算节点
scp kolla.tar voidking@192.168.56.113:~

4、在新计算节点导入所有images
docker load -i kolla.tar

5、在控制节点执行初始化
kolla-ansible -i ./multinode bootstrap-servers
报错如图:

参考《Ubuntu16使用Kolla安装OpenStack》解决。

6、预检查
kolla-ansible -i ./multinode prechecks

7、部署
kolla-ansible -i ./multinode deploy
报错,创建数据库失败。解决办法:取消multinode文件中control节点的注释,然后重新执行部署。
kolla-ansible -i ./multinode deploy --limit @/usr/local/share/kolla-ansible/ansible/site.retry
实际上,site.retry文件里面放的是一个单纯的IP地址192.168.56.113

如上图,等待几分钟后,出现部署成功的提示。

测试使用

新的问题来了,上面的操作显示新的计算节点部署成功,那么,安装过程中有没有对原系统产生影响?我们来测试查看一下。
1、使admin环境生效
source /etc/kolla/admin-openrc.sh

2、查看计算服务
openstack compute service list

如上图,此时已经有了两个计算节点。

3、查看以前的实例
openstack server list

之前的实例还在,没有受到影响,nice。

后记

上面的步骤,完美添加了一个新的计算节点,前提是《Kolla安装OpenStack多节点》一文中的globals.yml等配置文件保持不变。

我很好奇,如果主机清单multinode中的110、111、112三个节点没有添加注释,会不会对它们进行重新安装。于是,我把注释取消,执行了一次kolla-ansible -i ./multinode deploy。实践证明,没啥影响。那么,如果从bootstrap-servers开始执行呢?依次执行bootstrap-servers、prechecks、deploy三条命令会不会重装?于是,先执行bootstrap-servers。然后,卡在了时间同步,卡了一个钟头,遂Ctrl+C放弃。算了算了,不探究了,如无必要勿增实体,还是把精力放在更重要的事情上。