数据库复制(可选)
CloudStack支持MySQL节点间的数据库复制。通过标准的MySQL复制功能来实现。这样做可能希望防止MySQL服务器或者存储损坏。MySQL复制使用master/slave的模型。master节点是直接为管理服务器所使用。slave节点为备用,接收来自master节点的所有写操作,并将它应用于本地冗余数据库。以下是实施数据库复制的步骤。
注: 创建复制并不等同于备份策略,你需要另外建立有别于复制的MySQL数据的备份机制。
1.配置主节点
确保这是一个全新安装且没有数据的master数据库节点。
编辑master数据库的my.cnf,在[mysqld]的datadir下增加如下部分。
log_bin=mysql-bin |
考虑到其他的服务器,服务器id必须是唯一的。推荐的方式是将master的ID设置为1,后续的每个slave节点序号大于1,使得所有服务器编号如:1,2,3等。
重启MySQL服务。如果是RHEL/CentOS系统,命令为:
# |
如果是Debian/Ubuntu系统,命令为:
# |
在master上创建一个用于复制的账户,并赋予权限。我们创建用户”cloud-repl”,密码为”password”。假设master和slave都运行在172.16.1.0/24网段。
# |
离开当前正在运行的MySQL会话,在新的shell中打开第二个MySQL会话。检索当前数据库的位置点。
# |
注意你数据库实例所返回的文件及位置点,退出该会话。完成master安装。返回到master的第一个会话,取消锁定并退出MySQL。
mysql> unlock tables; |
2.配置从节点
安装并配置slave节点。在slave服务器上,运行如下命令。
# |
编辑my.cnf,在[mysqld]的datadir下增加如下部分。
server_id=2 |
重启MySQL。对于RHEL/CentOS系统,使用”mysqld”
# |
对于Ubuntu/Debian系统,使用”mysql.”
# |
引导slave连接master并进行复制。使用上面步骤中得到数据来替换IP地址,密码,日志文件,以及位置点。
mysql> change master to |
在slave上启动复制功能。
mysql> start slave; |
在slave上可能需要开启3306端口。这对复制来说不是必须的。但如果没有做,当需要进行数据库切换时,你仍然需要去做。
故障切换
这将为管理服务器提供一个复制的数据库,用于实现手动故障切换。管理员将CloudStack从一个故障MySQL实例切换到另一个。当数据库失效发生时,你应该:
1.停止管理服务器:
# |
将数据库的副本服务器修改为master并重启,确保数据库的副本服务器的3306端口开放给管理服务器。
更改使得管理服务器使用这个新的数据库。最简单的操作是在管理服务器的/etc/cloudstack/management/db.properties文件中写入新的数据库IP地址。
2.重启管理服务器:
# |
安装Usage服务(可选)
管理服务器配置完毕后,你可以选择安装Usage服务器。Usage服务器从系统事件中提取数据,便于对账户进行使用计费。
当存在多台管理服务器时,可以选择在它们上面安装任意数量的Usage服务器。Usage服务器会协调处理。考虑到高可用性,所以最少在两台管理服务器中安装Usage服务器。
安装Usage服务器的要求
- Usage服务器安装时,管理服务器必须在运行状态。
Usage服务器必须与管理服务器安装在同一台服务器中。
安装Usage服务器的步骤
RHEL/CentOS系统:
# |
- Debian/Ubuntu系统:
# |
安装成功后,使用如下命令启动Usage服务器。
# |
开机自启动
- RHEL/CentOS系统:
# |
- Debian/Ubuntu系统:
# |
SSL (可选)
CloudStack默认提供HTTP的访问方式。有许多的技术和网站选择使用SSL。因此,我们先抛下CloudStack所使用的HTTP,假设站点使用SSL是一个典型实践。
CloudStack使用Tomcat作为服务容器。由于CloudStack网站中断SSL会话,可能会开启Tomcatde的SSL访问。Tomcat的SSL配置描述请查阅: http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html.