CentOS7部署安装CloudStack4.11.0成功添加第一个主机

上一篇博客使用CentOS7 部署安装CloudStack4.10.0.。不知什么原因 添加主机时一直失败。。。管理节点的日志文件。。。 -m 参数一定不对,应该是管理节点IP才是。

2020-03-15 08:33:25,145 DEBUG [c.c.u.s.SSHCmdHelper] (catalina-exec-14:ctx-6ce193d6 ctx-8e15d638) (logid:15fc1fc0) Executing cmd: cloudstack-setup-agent  -m localhost -z 1 -p 1 -c 1 -g cf9c040c-b185-308b-8e04-35eaea7a0739 -a --pubNic=cloudbr0 --prvNic=cloudbr0 --guestNic=cloudbr0 --hypervisor=kvm

使用CloudStack4.11.0 中间也出来过这个问题。不过这几次都添加成功了。

对我来说这是一个巨坑。。。管理节点配置cloudbr0一定要在安装cloudstack之前!!!应该说是初始化管理节点management数据之前,计算节点配置cloudbr0可以在安装设置agent之后,但是一定要配置。。。。要先安装好net-tools工具包。。。才能设置cloudbr0 和 ens33 然后重启network,没有安装net-tools仍然会出现-m localhost
并不是。管理节点并不是必须设置桥接文件,只是在管理节点安装完成后查看一下全局设置,看一下全局设置的host 如果是localhost,修改成管理节点IP 即可。。。

准备实验环境。。。没有单独主机。就用VMware workstations来使用虚拟机做实验了。。。VMware版本12.5
系统 CentOS7 本次实验把管理节点和计算节点布置在一台虚拟主机之上了。二者分离差不太多。可能会在文末再写一段不再同一个主机上怎么部署。

经过多次测试。。。建议安装4.13.1版本.系统模板选择4.11.3。。。

http://download.cloudstack.org/centos/7/4.12/
http://download.cloudstack.org/systemvm/4.11/systemvmtemplate-4.11.2-kvm.qcow2.bz2

一,安装CentOS7

1.下载系统镜像 http://mirrors.aliyun.com/centos/7/isos/x86_64/阿里云的下载地址。
2.编辑虚拟机设备 网络桥接模式 4G 内存(分配更多更好) 2个处理器(更多更好) 开启CPU虚拟化
虚拟化IntelVT-x或AMD-v
3. 选择最小安装。安装过程设置网络连接。
网络连接
开启网络连接并设置 主机名 如allinone.cloud.feng cloud.feng 可以看成一个域名
开启网络并设置主机名
设置时区 Asia/Shanghai。这个也不是必须的。
设置时区

二,安装完成后。可进行一些基本设置。

系统安装完毕 可以 yum -y upgrade 升级一下软件包
1.关闭防火墙并禁止开机启动。主要是可能阻止nfs 服务器的运行访问

systemctl disable firewalld
systemctl stop firewalld

2.设置 Selinux为permissive模式
编辑 /etc/selinux/config 文件 将SELINUX值设为permissive

vi /etc/selinux/config
SELINUX=permissive

设置完成后要重启才能生效 reboot
想要立即生效可使用命令 setenforce permissive

3.设置静态IP。这里坑了我一下。。。要先安装 net-tools 工具,然后再设置。官方建议是安装bridge-utils工具包。我试了一下,只安装bridge-utils包,不安装net-tools然后设置cloudbr0作为网卡的桥接文件,添加主机时会出错。。。一个让我深恶痛绝的 -m localhost。。。
先安装 epel*

yum -y install epel*
yum -y install net-tools

安装完成可先查看一下 当前网桥。可以看到就是默认的网卡

route -n

网桥

编辑网卡桥接文件 cloudbr0

vi /etc/sysconfig/network-scripts/ifcfg-cloudbr0

内容如下,根据自己实际IP修改

TYPE=Bridge
BOOTPROTO=none
DEVICE=cloudbr0
ONBOOT=yes
IPADDR=192.168.199.93
NETMASK=255.255.255.0
GATEWAY=192.168.199.1
STP=yes

设置网卡文件 我的是 ens33

vi /etc/sysconfig/network-scripts/ifcfg-ens33

修改或添加如下内容。

BOOTPROTO="none"
ONBOOT="yes"
BRIDGE=cloudbr0

这样ifcfg-ens33文件看上去像这个样子

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="0ffad9c6-4d9b-4813-b9f7-e67aad7383fa"
DEVICE="ens33"
ONBOOT="yes"
BRIDGE=cloudbr0

重新启动网络服务

systemctl restart network

再次查看网桥,应当发现有了变化
修改后的网桥

这里cloudbr0 设置的有问题,使用虚拟机测试时一切正常,当真正使用真实主机远程连接配置时,设置后连接直接断开了,具体设置还需要再看。

4.设置dns服务器。 不同机器情况可能不同。 这里使用公网的dns服务器
修改 /etc/resolv.conf文件

vi	/etc/resolv.conf

加上

nameserver	8.8.8.8
nameserver 	8.8.4.4

保存完成可以 ping 一下百度 ping www.baidu.com 应该会根据www.baidu.com解析出一个IP

5.设置主机名,一般来说需要修改两个地方。
修改 /etc/hostname

vi /etc/hostname

设置为

allinone.cloud.feng

修改 /etc/hosts

vi /etc/hosts

加上一句

192.168.199.93	allinone.cloud.feng

192.168.199.93 是设置的静态IP,一般设置完成不会立即生效。需要重启。 reboot
重启完成 查看主机名

hostname --fqdn

如果返回

allinone.cloud.feng

表示修改 主机名成功。

三,安装必备软件。

1.安装 epel, EPEL 是yum的一个软件源,里面包含了许多基本源里没有的软件了 这个上一步已经安装过了 yum -y install epel*
安装完成重新创建 本地仓库缓存 yum clean all && yum makecache
有时候CentOS7 x86_64 系统默认是已安装 EPEL 的,不过却是未启用状态,所以安装后还要启用epel 一般来说 安装 epel* 之后 不用特意执行下面的代码 就已经启用了 EPEL

yum install -y yum-utils && yum-config-manager --enable epel

2.安装vim。 这个不是必须的,只是为了编辑文件更方便。

yum -y install vim

3.安装时间同步模块 ntp。 一般来说现在的 CentOS已经安装过 chronyd的,作用和ntp基本是一样的?应该不用再安装 ntp。
如果要使用ntp,那就要先停止chronyd 服务,并禁止开机自启

systemctl disable chronyd
systemctl stop chronyd

一定要确保 chronyd停止才可以启动 ntp 不然会冲突
安装ntp

yum -y install ntp

设置为开机自启并启动

systemctl enable ntpd
systemctl start ntpd

4.安装nfs 服务。CloudStack实验部署使用nfs就够了。

CloudStack使用了两种网络存储。一种是主存储,主存储用于存放虚拟机硬盘文件。主存储也可使用本地存储,并非必需使用网络存储。二级存储用于存放虚拟机模板/快照/ISO文件,二级存储只能使用网络存储。

Primary storage:一级存储与 cluster 关联,它为该 cluster 中的主机的全部虚拟机提供磁盘卷。一个 cluster 至少有一个一级存储,且在部署时位置要临近主机以提供高性能。
Secondary storage:二级存储与 zone 关联,它存储模板文件,ISO 镜像和磁盘卷快照。
首先,可以为虚拟机挂载两块新硬盘。
挂载一块硬盘
添加后 查看磁盘状态 有两块新增硬盘 /dev/sdb /dev/sdc

fdisk -l

两块硬盘未挂载
格式化硬盘

mkfs.ext4 /dev/sdb
mkfs.ext4 /dev/sdc

创建挂载点

mkdir -p /export/primary
mkdir -p /export/secondary

开始挂载 将/dev/sdb挂载到 /export/primary目录 /dev/sdc挂载到 /export/secondary。
/etc/fstab文件表示的是开机挂载, mount -a命令立即挂载/etc/fstab 文件中内容。

echo "/dev/sdb  /export/primary  ext4 defaults 0 0"  >> /etc/fstab
echo "/dev/sdc  /export/secondary  ext4 defaults 0 0"  >> /etc/fstab
mount -a

查看当前磁盘状态
挂载后磁盘状态
挂载新硬盘并不是必须的。只是为了看上去直观一点。。。但是两个目录是必须创建的。
主存储是可以 设置成本地存储的,因此当主存储和二级存储不放在一个主机上时。主存储可以不必安装设置nfs。 只用编辑共享文件目录。然后WEBUI 设置主存储时 选择 ShareMountPoint协议 即可。

安装 nfs

yum -y install nfs-utils

编辑共享文件目录

vim /etc/exports

添加如下内容

/export/primary *(rw,async,no_root_squash,no_subtree_check)
/export/secondary *(rw,async,no_root_squash,no_subtree_check)

修改nfs的配置文件 /etc/sysconfig/nfs

vim /etc/sysconfig/nfs

在文件末尾添加或者将这几句的注释去掉

LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
RQUOTAD_PORT=875
STATD_PORT=662
STATD_OUTGOING_PORT=2020

RQUOTAD_PORT=875 原配置文件似乎没有

编辑/etc/idmapd.conf中的域设置是未注释的,并设置如下:Domain = cloud.feng

vim /etc/idmapd.conf
Domain = cloud.feng

启动nfs服务

systemctl enable rpcbind
systemctl start rpcbind
systemctl enable nfs
systemctl start nfs

启动完成可以查看。一下本机的共享

showmount -e allinone.cloud.feng

本机共享

nfs想要正常使用一般来说要开放端口,让防火墙不拦截,但是这里为了方便把防火墙关了。如果不想关闭防火墙可以设置开放端口https://blog.csdn.net/dandanfengyun/article/details/105202321

5.数据库的安装。Centos7不能直接安装MySQL,可以使用mariadb代替,至于MySQL怎么安装,可以百度。。。

安装 mariadb

yum -y install mariadb-server mariadb

设置开机启动

systemctl enable mariadb

编辑配置文件 /etc/my.ini

vim /etc/my.cnf

在[mysqld] 模块下加入

innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log-bin=mysql-bin
binlog-format = 'ROW'

据说 max_connections 应该等于管理节点个数 * 350

启动mariadb 服务

systemctl start mariadb

可以执行一下数据库安全 按提示操作就好。

mysql_secure_installation

如果上一步执行了,可能已经设置了密码
设置root密码进入数据库操作界面

mysqladmin -uroot password 123456
mysql -uroot -p123456

删除掉空用户

delete from mysql.user where user='';

然后退出数据库

exit

设置root用户远程访问权限

mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY '123456'";

6.MySQL连接器安装 mysql-connector-python
这一步不是必要的,因为该包是management的依赖包,没有单独安装的话的话在安装cloudstack-management时会安装该包。但是有个前提,那就是 安装过 epel 并且启用,参见上文,不然解析出不来该依赖包如何安装
mariadb可以看做MySQL的分支,因此连接器是可以使用MySQL的。
如果epel* 未安装或者未启用,解析依赖关系时就会出错。

Error: Package: cloudstack-management-4.11.0.0-1.el7.centos.x86_64 (/cloudstack-management-4.11.0.0-1.el7.centos.x86_64)
           Requires: mysql-connector-python
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

安装过程
创建文件/etc/yum.repos.d/mysql.repo

vi /etc/yum.repos.d/mysql.repo

内容如下:

[mysql-connectors-community]
name=MySQL Community connectors
baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/$releasever/$basearch/
enabled=1
gpgcheck=1

从MySQL导入GPG公钥:

rpm --import http://repo.mysql.com/RPM-GPG-KEY-mysql

安装mysql连接器

yum -y install mysql-connector-python

7.配置CloudStack包存储库
ApacheCloudStack官方版本是源代码。因此,没有“官方”二进制文件可用。使用社区提供的yum存储库之一。此外,这个示例假设有一个4.11CloudStack安装版本–根据需要替换版本。

新建cloudstack.repo文件并编辑

vi /etc/yum.repos.d/cloudstack.repo
[cloudstack]
name=cloudstack
baseurl=http://cloudstack.apt-get.eu/centos7/4.11/
enabled=1
gpgcheck=0

安装 epel vim ntp nfs mariadb*

四,安装CloudStack。

一.管理节点 management

yum -y install cloudstack-management

如果我们这么做,将会从上一步中设置的包存储库中选择合适的版本安装,一般是4.11.3。如果想要安装指定版本,如4.11.0可以下载到本地安装主要需要三个文件 management agent common
http://cloudstack.apt-get.eu/centos7/4.11/

1.下载到本地后安装

yum -y install cloudstack-common-4.11.0.0-1.el7.centos.x86_64.rpm cloudstack-management-4.11.0.0-1.el7.centos.x86_64.rpm 

如果是计算节点是Xenserver 主机需要
下载一个vhd-util http://download.cloudstack.org/tools/vhd-util 放到
/usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/目录

2.数据库初始化

cloudstack-setup-databases cloud:123456@localhost --deploy-as=root:123456

数据库初始化
3.启动Management服务

cloudstack-setup-management

如果servlet容器是Tomcat7,则必须使用参数–tomcat7 比如CloudStack4.10版本,启动cloudstack-setup-management --tomcat7

4.还需要安装一个KVM模板 根据计算节点 的 虚拟控制程序决定,常见的kvm Xenserver等等。。。这里使用的kvm
CloudStack通过一系列系统虚拟机提供功能,如访问虚拟机控制台,如提供各类网络服务,以及管理辅助存储的中的各类资源。

可以通过网络安装

/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt \
-m /export/secondary \
-u http://cloudstack.apt-get.eu/systemvm/4.11/systemvmtemplate-4.11.0-kvm.qcow2.bz2  \
-h kvm -F

如果觉得速度过慢可以下载到本地安装

/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt  \
-m /export/secondary \
-f /root/systemvmtemplate-4.11.0-kvm.qcow2.bz2 \
-h kvm –F

-m 指定的就是二级存储的目录。要把该模板安装到二级存储中。由于我们使用的是本地磁盘然后用nfs共享,所以可以直接使用。如果不在本地,要先把改目录挂载到本地,安装完成后再卸载。

二.计算节点agent 安装设置

yum -y install cloudstack-agent

将会从上一步中设置的包存储库中选择合适的版本安装,一般是4.11.3。如果想要安装指定版本,如4.11.0可以下载到本地安装
1.本地安装

 yum -y install cloudstack-common-4.11.0.0-1.el7.centos.x86_64.rpm cloudstack-agent-4.11.0.0-1.el7.centos.x86_64.rpm  

2.虚拟化配置
CloudStack通过libverd来管理所有的kvm
有两部分需要进行配置, libvirt和QEMU

1) 编辑QEMU VNC配置文件/etc/libvirt/qemu.conf

vim /etc/libvirt/qemu.conf

去掉注释

vnc_listen="0.0.0.0"

2)CloudStack使用libvirt管理虚拟机

配置/etc/libvirt/libvirtd.conf文件

vim /etc/libvirt/libvirtd.conf
listen_tls = 0
listen_tcp = 1
tcp_port = "16059"
auth_tcp = "none"
mdns_adv = 0

这里tcp_port="16059"或者是"16509"都是可以的。没什么影响

配置/etc/sysconfig/libvirtd文件

vim /etc/sysconfig/libvirtd
LIBVIRTD_ARGS="--listen"

当管理节点添加此主机时,这个tcp_port = “16059"会自动变成16509,还有 LIBVIRTD_ARGS=”-1",这些都是cloudstack改变的。无须再手动改它!!

3)重启libvirtd 并设置为开机自启

systemctl restart libvirtd
systemctl enable libvirtd

4)检查

lsmod | grep kvm

lsmod| grep kvm
如果没有 可能就是CPU虚拟化没有开

3.日志文件查看
manager查看管理节点日志

tail -f /var/log/cloudstack/management/management-server.log

查看管理节点安装日志

tail -f /var/log/cloudstack/management/setupManagement.log 

agent 查看Agent节点日志

tail -f /var/log/cloudstack/agent/agent.log 

受控节点安装日志

tail -f /var/log/cloudstack/agent/setup.log 

五,进行基本配置

安装完成 可以尝试进行一下基本设置
先查看管理节点日志

tail -f /var/log/cloudstack/management/management-server.log 

打开一个浏览器 访问 http://managerIP:8080/client/
比如 http://192.168.199.93:8080/client/
可以选择简体中文。。。美滋滋
输入账号密码 初始化账号 admin 密码 password
登录后选择继续执行基本安装,跟着界面说明一步一步来就可以

添加资源域
添加资源域
添加提供点
添加提供点
添加来宾网络
来宾网络
集群选择 kvm
添加集群
添加主机 就是一个计算节点。。这里计算节点和管理节点同一个主机
添加主机
添加主存储
添加主存储
添加二级存储
继续 后查看 管理节点日志文件。。。
一般看到如下日志,基本代表成功

2020-03-27 18:40:39,041 DEBUG [c.c.u.s.SSHCmdHelper] (qtp1644443712-13:ctx-9e6a500b ctx-792cd6e4) (logid:dd4f3a9f) SSH command: cloudstack-setup-agent  -m 192.168.199.93 -z 1 -p 1 -c 1 -g c30c6113-3cd1-3ce6-b62f-aae3bc6bd028 -a --pubNic=cloudbr0 --prvNic=cloudbr0 --guestNic=cloudbr0 --hypervisor=kvm
SSH command output:Starting to configure your system:
Configure SElinux ...         [OK]
Configure Network ...         [OK]
Configure Libvirt ...         [OK]
Configure Firewall ...        [OK]
Configure Nfs ...             [OK]
Configure cloudAgent ...      [OK]
CloudStack Agent setup is done!

如果不幸看到 -m localhost 那大概率这次添加失败了。。。
如果成功会看到
成功设置云
点击启动即可
然后点击基础架构即可看到刚配置的云
基础架构

六,我觉最坑的几个点。

尝试部署了n多遍,中间有的成功,有的不成功,疑惑非常。。。最讨厌看到的的就是

2020-03-24 05:17:01,169 DEBUG [c.c.u.s.SSHCmdHelper] (qtp1644443712-15:ctx-bacde7e2 ctx-d77ec991) (logid:d754755e) Executing cmd: cloudstack-setup-agent  -m localhost -z 1 -p 1 -c 1 -g e2aa0a07-271e-3e5e-8246-bddf881c1dd0 -a --pubNic=cloudbr0 --prvNic=cloudbr0 --guestNic=cloudbr0 --hypervisor=kvm

一旦出现localhost。基本代表失败。。。但是我又不明白为什么会是localhost 这里应该是管理节点的ip才对。。。

经过好多次的实验。感觉问题好像出在了设置静态IP上。。。这感觉没什么道理。但是确实好像是这样的,因为修改了之后,成功好多次,没有再再见到localhost了。。。
又出错了。。。在这里踩了好多坑了。似乎设置网卡文件一定要在 安装cloudstack之前。。。
简单来说,要设置ens33 的网卡桥接文件 cloudbr0 首先要安装 net-tools

yum -y install net-tools

再编辑cloudbr0文件

vim /etc/sysconfig/network-scripts/ifcfg-cloudbr0

然后再设置 ens33

BRIDGE=cloudbr0

最后重启网络

systemctl restart network

如果先编辑cloudbr0 和 ens33 ,然后安装net-tools 再重启network,应该也是可行的。

如果没有安装 net-tools 直接设置cloudbr0 和 ens33 也是可以当做静态IP来使用的,但是每次添加主机时就会出错。。。这个错误,我真的服了。感觉没什么道理,但却是好像是这样解决的。。。

计算节点和管理节点的安装在不同主机上。基本步骤和安装在一个主机上类似。
不同的地方大概有
IP 和主机名
nfs 共享点的设置 一般管理节点可以添加一个二级存储,计算节点可以添加主存储
计算节点不用 安装 mariadb
管理节点安装 management 计算节点安装 agent
其他的类似。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章