3. 种子节点部署¶
UOS Seed Node 是作为承载 UnderCloud 以及 OpsServer 的一台 Hypervisor。
3.2. 安装种子节点操作系统¶
系统推荐使用 CentOS 7 1611 版本(已测试)。其他版本理论上也可以使用,但是我们没有测试其他版本。 安装方式可以是 USB 安装、CD 安装、IPMI 安装。安装系统时可以不配置IP。
注意:分区时除了必要分区外,剩余空间都给根分区。
3.3. 配置软件源¶
3.3.1. 将本地软件源拷贝至 /opt/repos 中¶
目录结构应该如下:
/opt/repos/
└── uos-4.0-production
├── ceph-jewel
├── epel
├── extras
├── images
├── kvm-common
├── openstack-newton
├── opstools
├── os
├── trunk
├── uos-4.0-production.repo
├── uos-opstools
├── updates
├── ustack
└── zabbix-3.0
3.3.2. 配置本地软件源,并安装 Ngnix¶
# 删除所有现有repo
$ sudo rm -f /etc/yum.repos.d/*.repo
# 拷贝 repo 文件到 /etc/yum.repos.d/
$ sudo cp /opt/repos/uos-4.0.production/uos-4.0-production.repo /etc/yum.repos.d/uos-4.0-production.repo
# 替换 repo 中的 url 为 file
$ sudo sed -i ‘s#http://repo.ustack.com/uos-4.0-production#file:///opt/repos#’ /etc/yum.repos.d/uos-4.0.repo
$ sudo yum clean metadata && yum makecache
$ sudo yum install -y yum-plugin-priorities
# 安装 Nginx
$ sudo yum install -y nginx
3.3.3. 编辑 /etc/nginx/nginx.conf¶
修改 root 目录,并在 location / 中开启 autoindex
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /opt/repos;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
autoindex on;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
3.3.4. 启动 Nginx¶
$ systemctl restart nginx
$ systemctl enable nginx
# 将 yum repo 中的地址修改为种子节点的地址
$ sed -i ‘s#repo.ustack.com#x.x.x.x#’ /opt/repos/uos-4.0.production/uos-4.0-production.repo
# 安装 KVM
$ yum install -y libvirt-client libvirt-daemon qemu-kvm libvirt-daemon-driver-qemu libvirt-daemon-kvm virt-install bridge-utils rsync libguestfs-tools-c
重启机器。
3.4. 种子节点网络配置¶
按照规划,种子节点的网络应该这样划分:第一块千兆网卡用于 External 网络。第一、第二块万兆用于 PXE 网络。种子节点的访问入口放在 PXE 网络的网桥上。
3.4.1. 安装 OpenvSwitch¶
$ sudo yum install -y openvswitch
$ sudo systemctl enable openvswitch
$ sudo systemctl start openvswitch
3.4.2. 在种子节点上添加 OverCloud External 的网桥¶
# 创建外部网络的 ovs
$ sudo ovs-vsctl add-br ovs-external
# 添加 OverCloud External 网络所属网卡,比如 em1 是第一块千兆网卡
$ sudo ovs-vsctl add-port ovs-external em1
3.4.3. 在种子节点上添加 PXE 网桥¶
# 创建 PXE 网络 ovs
$ sudo ovs-vsctl add-br ovs-pxe
# 如果部署环境使用 bond pxe,就需要创建 bond port
$ sudo ovs-vsctl add-bond ovs-pxe bond1 em3 em4 lacp=active bond_mode=balance-slb
# 如果部署环境不使用 bond pxe,只需要创建普通 port
$ sudo ovs-vsctl add-port ovs-pxe em3
3.4.4. 为种子节点分配 IP 地址¶
一般我们选择部署网络的网桥作为种子节点的访问入口。
创建 ifcfg-ovs-pxe
$ sudo vim /etc/sysconfig/network-scripts/ifcfg-ovs-pxe
DEVICE=ovs-pxe
ONBOOT=yes
HOTPLUG=no
NM_CONTROLLED=no
PEERDNS=no
DEVICETYPE=ovs
TYPE=OVSBridge
MTU=1500
BOOTPROTO=static
IPADDR=X.X.X.X
PREFIX=24
GATEWAY=X.X.X.X
禁用其他没有使用到的网卡。
$ sudo vim /etc/sysconfig/network-scripts/ifcfg-enoX
BOOTPROTO="none"
ONBOOT="no"
$ sudo systemctl restart network
3.4.5. 创建 Libvirt 网络¶
创建以下网络配置 XML 文件
# file: ovs-mgmt.xml
<network>
<name>ovs-mgmt</name>
<forward mode='bridge'/>
<bridge name='ovs-mgmt'/>
<virtualport type='openvswitch'/>
</network>
$ sudo virsh net-define ovs-mgmt.xml
$ sudo virsh net-start ovs-mgmt
$ sudo virsh net-autostart ovs-mgmt
# file: ovs-external.xml
<network>
<name>ovs-external</name>
<forward mode='bridge'/>
<bridge name='ovs-external'/>
<virtualport type='openvswitch'/>
</network>
$ sudo virsh net-define ovs-external.xml
$ sudo virsh net-start ovs-external.xml
$ sudo virsh net-autostart ovs-external.xml
# file: ovs-pxe.xml
<network>
<name>ovs-pxe</name>
<forward mode='bridge'/>
<bridge name='ovs-pxe'/>
<virtualport type='openvswitch'/>
</network>
$ sudo virsh net-define ovs-pxe.xml
$ sudo virsh net-start ovs-pxe
$ sudo virsh net-autostart ovs-pxe
3.5. 配置种子节点虚拟机¶
解压虚拟机镜像到 /var/lib/libvirt/images 目录。
$ sudo unxz -k -c CentOS-7-x86_64-GenericCloud-1611.qcow2.xz > /var/lib/libvirt/images/undercloud.qcow2
$ sudo unxz -k -c CentOS-7-x86_64-GenericCloud-1611.qcow2.xz > /var/lib/libvirt/images/opsserver.qcow2
调整 VM 大小
$ sudo qemu-img resize /var/lib/libvirt/images/undercloud.qcow2 100G
$ sudo qemu-img resize /var/lib/libvirt/images/opsserver.qcow2 1T
注入密码
$ sudo virt-customize -a /var/lib/libvirt/images/undercloud.qcow2 --root-password password:your_password
$ sudo virt-customize -a /var/lib/libvirt/images/opsserver.qcow2 --root-password password:your_password
创建 UnderCloud VM
$ sudo virt-install --boot hd --name undercloud --memory=16384 --vcpus=4 --disk path=/var/lib/libvirt/images/undercloud.qcow2 --network network=ovs-pxe --network network=ovs-mgmt --network network=ovs-external --graphics=vnc,listen='0.0.0.0' --hvm --os-variant=centos7.0 --noautoconsole --import --noreboot
创建 OpsServer VM
$ sudo virt-install --boot hd --name opsserver --memory=16384 --vcpus=4 --disk path=/var/lib/libvirt/images/opsserver.qcow2 ---network network=ovs-mgmt --network network=ovs-pxe --graphics=vnc,listen='0.0.0.0' --hvm --os-variant=centos7.0 --noautoconsole --import --noreboot