安装数据库服务器
CloudStack管理服务器使用一个MySQL数据库服务来存储自身数据。当你在一个独立的节点上安装管理服务器,你可以在本地安装MySQL服务器。对于在多重节点上安装,我们假设MySQL也运行在一个已经分隔开的节点上。
CloudStack已经在MySQL 5.1和5.5上被测试过。这些平台版本包含RHEL/CentOS和Ubuntu.
在管理服务器节点上安装数据库。
本节将会介绍如何将MySQL与管理服务器安装在同一台机器上. 这种方法是针对只有一个管理服务器的部署. 如果你部署了多台管理服务器节点, 你最好使用单独的一个节点来部署MySQL数据库. 参阅 在单独的节点上安装数据库。.
使用你部署的软件仓库安装MySQL:.
- yum install mysql-server
- apt-get install mysql-server
编辑MySQL的配置文件 。根据你操作系统的不同, 文件是/etc/my.cnf 或者/etc/mysql/my.cnf.
在[mysqld]区域插入下列行。
你可以把这几行放在datadir行下. 参数max_connections应该设置为 350 乘以你部署管理服务器节点的个数. 这个示例假定你只部署了一台管理服务器.
注解
在Ubuntu上,你也可以创建 /etc/mysql/conf.d/cloudstack.cnf文件并在此添加如下目录。不要忘记在文件第一行加[mysqld]。
- innodb_rollback_on_timeout=1
- innodb_lock_wait_timeout=600
- max_connections=350
- log-bin=mysql-bin
- binlog-format = 'ROW'
启动或者重启MySQL使新的配置生效。
在RHEL/CentOS上,MySQL在安装完后不会自动启动。手工启动它。
- service mysqld start
在Ubuntu上,重启MySQL.
- service mysql restart
(仅限CentOS 和 RHEL平台,对Ubuntu不作要求)
警告
在RHEL和CentOS上, MySQL默认并未设置root用户的密码. 强烈建议您设置超级用户密码作为安全预防措施。
运行以下命令进行安全配置。你可以对所有的问题回答”Y”。
- mysql_secure_installation
CloudStack的会被安全机制阻止,例如SELinux。确保关闭SELinux 和 Agent具有所必需的权限。
配置SELinux(RHEL和CentOS):
检查你的机器是否安装了SELinux。如果没有,请跳过此部分。
在RHEL或者CentOS中,SELinux是默认安装并启动的。你可以使用下条命令验证:
- $ rpm -qa | grep selinux
在/etc/selinux/config文件中设置变量SELINUX为“permissive”。这样能确保对SELinux的设置在系统重启之后依然生效。
在RHEL 或者CentOS平台上:
- vi /etc/selinux/config
修改如下行
- SELINUX=enforcing
修改为:
- SELINUX=permissive
执行该命令无需系统重启就会将SELinux的运行模式设置为permissive。
- $ setenforce permissive
设置数据库. 下列的命令会在数据库中创建”cloud”用户.
dbpassword,为 “cloud”的用户设置的密码。你也可以选择不设置密码,尽管并不推荐。
deploy-as, 指定安装数据库的用户名和密码. 在下面的命令中, root用户部署了数据库并创建了cloud用户.
(可选)encryption_type, 使用file或web来告知数据库通过哪种技术对密码进行加密. 默认是file. 参考 关于密码和密钥加密.
(可选)management_server_key,在CloudStack属性文件中使用加密的机密参数替代默认密码。默认为:password。强烈推荐您使用更安全的值替代它。参阅: 关于密码和密钥加密.
(可选)database_key,在CloudStack数据库中使用加密的机密参数替代默认密码。默认为:password。强烈推荐您使用更安全的值替代它。参阅: 关于密码和密钥加密.
(可选)management_server_ip, 你可以明确的指定群集管理服务器的IP。如果不指定,默认使用本机IP。
<pre>cloudstack-setup-databases cloud:<dbpassword>@localhost \
--deploy-as=root:<password> \
-e <encryption_type> \
-m <management_server_key> \
-k <database_key> \
-i <management_server_ip>
</pre>
当脚本完成后,你将会看到类似这样的信息:”Successfully initialized the database”
注解
If the script is unable to connect to the MySQL database, check the “localhost” loopback address in `/etc/hosts`. It should be pointing to the IPv4 loopback address “127.0.0.1” and not the IPv6 loopback address `::1`. Alternatively, reconfigure MySQL to bind to the IPv6 loopback interface.
如果你的KVM Hypervisor和管理服务器在同一台的机器上,编辑 /etc/sudoers并添加以下行:
- Defaults:cloud !requiretty
现在数据库已经设置好, 你可以完成管理服务器的设置. 这个命令将会设置iptables, sudoers并启动管理服务.
- # cloudstack-setup-management
你应该看到这样的信息: “Management Server setup is done.”
在单独的节点上安装数据库。
This section describes how to install MySQL on a standalone machine, separate from the Management Server. This technique is intended for a deployment that includes several Management Server nodes. If you have a single-node Management Server deployment, you will typically use the same node for MySQL. See “Install the Database on the Management Server Node”.
注解
管理服务器不要求为MySQL节点指定特定的分支。你可以选择使用任何一个操作系统的分支。建议与管理服务器使用相同的分支,但不做强制要求。参阅 “管理服务器, 数据库和存储系统要求”.
使用你部署的软件仓库安装MySQL:.
- yum install mysql-server
- apt-get install mysql-server
编辑MySQL的配置文件 (根据你操作系统的不同, 文件为/etc/my.cnf 或者/etc/mysql/my.cnf) 并在 [mysqld] 章节插入下面几行. 你可以把这几行放在datadir行下. 参数max_connections应该设置为 350 乘以你部署管理服务器节点的个数. 这个示例假定你只部署了一台管理服务器.
注解
在Ubuntu上,你也可以创建 /etc/mysql/conf.d/cloudstack.cnf文件并在此添加如下目录。不要忘记在文件第一行加[mysqld]。
- innodb_rollback_on_timeout=1
- innodb_lock_wait_timeout=600
- max_connections=700
- log-bin=mysql-bin
- binlog-format = 'ROW'
- bind-address = 0.0.0.0
启动或者重启MySQL使新的配置生效。
在RHEL/CentOS上,MySQL在安装完后不会自动启动。手工启动它。
- service mysqld start
在Ubuntu上,重启MySQL.
- service mysql restart
(仅限CentOS 和 RHEL平台,对Ubuntu不作要求)
警告
在RHEL 和 CentOS上,MySQL默认并未设置root用户的密码。强烈建议您设置超级用户密码作为安全预防措施。运行以下命令进行安全配置。你可以对所有问题回答”Y”, “Disallow root login remotely?”问题除外。设置数据库需要root远程登录。
- mysql_secure_installation
如果系统中存在防火墙,打开TCP的3306端口用于建立MySQL连接。
在Ubuntu上,默认防火墙是UFW。用以下命令打开端口:
- ufw allow mysql
在RHEL/CentOS上:
编辑/etc/sysconfig/iptables文件并在INPUT链中添加下列行。
- -A INPUT -p tcp --dport 3306 -j ACCEPT
现在重新加载iptables规则。
- service iptables restart
返回到第一个管理服务器root用户的shell中。
设置数据库。按照如下命令在数据库中创建cloud用户。
dbpassword,为 “cloud”的用户设置的密码。你也可以选择不设置密码。
deploy-as, 指定安装数据库的用户名和密码. 在下面的命令中, root用户部署了数据库并创建了cloud用户.
(可选)encryption_type, 使用file或web来告知数据库通过哪种技术对密码进行加密. 默认是file. 参考 关于密码和密钥加密.
(可选)management_server_key,在CloudStack属性文件中使用加密的机密参数替代默认密码。默认为:password。强烈推荐您使用更安全的值替代它。参阅关于密码和密钥加密。
(可选)database_key,在CloudStack数据库中使用加密的机密参数替代默认密码。默认为:password。强烈推荐您使用更安全的值替代它。参阅: 关于密码和密钥加密.
(可选)management_server_ip, 你可以明确的指定群集管理服务器的IP。如果不指定,默认使用本机IP。
<pre>cloudstack-setup-databases cloud:<dbpassword>@<ip address mysql server> \
--deploy-as=root:<password> \
-e <encryption_type> \
-m <management_server_key> \
-k <database_key> \
-i <management_server_ip>
</pre>
当脚本完成后,你将会看到类似这样的信息:”Successfully initialized the database”