上一篇博客使用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 本次实验把管理节点和计算节点布置在一台虚拟主机之上了。二者分离差不太多。可能会在文末再写一段不再同一个主机上怎么部署。
http://download.cloudstack.org/centos/7/4.12/
http://download.cloudstack.org/systemvm/4.11/systemvmtemplate-4.11.2-kvm.qcow2.bz2
1.下载系统镜像 http://mirrors.aliyun.com/centos/7/isos/x86_64/阿里云的下载地址。
2.编辑虚拟机设备 网络桥接模式 4G 内存(分配更多更好) 2个处理器(更多更好) 开启CPU虚拟化
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' WITH GRANT OPTION";
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*
一.管理节点 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
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
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来使用的,但是每次添加主机时就会出错。。。这个错误,我真的服了。感觉没什么道理,但却是好像是这样解决的。。。
最后发现并不是。重点在于全局设置的host,host的值可能默认设置的localhost。需要设置正确的IP 才可以正常添加主机
计算节点和管理节点的安装在不同主机上。基本步骤和安装在一个主机上类似。
不同的地方大概有
IP 和主机名
nfs 共享点的设置 一般管理节点可以添加一个二级存储,计算节点可以添加主存储
计算节点不用 安装 mariadb
管理节点安装 management 计算节点安装 agent
其他的类似。。。