安装数据库服务器

CloudStack管理服务器使用一个MySQL数据库服务来存储自身数据。当你在一个独立的节点上安装管理服务器,你可以在本地安装MySQL服务器。对于在多重节点上安装,我们假设MySQL也运行在一个已经分隔开的节点上。

CloudStack已经在MySQL 5.1和5.5上被测试过。这些平台版本包含RHEL/CentOS和Ubuntu.

在管理服务器节点上安装数据库。

本节将会介绍如何将MySQL与管理服务器安装在同一台机器上. 这种方法是针对只有一个管理服务器的部署. 如果你部署了多台管理服务器节点, 你最好使用单独的一个节点来部署MySQL数据库. 参阅 在单独的节点上安装数据库。.

  1. 使用你部署的软件仓库安装MySQL:.

    1. yum install mysql-server
    1. apt-get install mysql-server
  2. 编辑MySQL的配置文件 。根据你操作系统的不同, 文件是/etc/my.cnf 或者/etc/mysql/my.cnf.

  3. 在[mysqld]区域插入下列行。

    你可以把这几行放在datadir行下. 参数max_connections应该设置为 350 乘以你部署管理服务器节点的个数. 这个示例假定你只部署了一台管理服务器.

    注解

    在Ubuntu上,你也可以创建 /etc/mysql/conf.d/cloudstack.cnf文件并在此添加如下目录。不要忘记在文件第一行加[mysqld]。

    1. innodb_rollback_on_timeout=1
    2. innodb_lock_wait_timeout=600
    3. max_connections=350
    4. log-bin=mysql-bin
    5. binlog-format = 'ROW'
  4. 启动或者重启MySQL使新的配置生效。

    在RHEL/CentOS上,MySQL在安装完后不会自动启动。手工启动它。

    1. service mysqld start

    在Ubuntu上,重启MySQL.

    1. service mysql restart
  5. (仅限CentOS 和 RHEL平台,对Ubuntu不作要求)

    警告

    在RHEL和CentOS上, MySQL默认并未设置root用户的密码. 强烈建议您设置超级用户密码作为安全预防措施。

    运行以下命令进行安全配置。你可以对所有的问题回答”Y”。

    1. mysql_secure_installation
  6. CloudStack的会被安全机制阻止,例如SELinux。确保关闭SELinux 和 Agent具有所必需的权限。

    配置SELinux(RHEL和CentOS):

    1. 检查你的机器是否安装了SELinux。如果没有,请跳过此部分。

      在RHEL或者CentOS中,SELinux是默认安装并启动的。你可以使用下条命令验证:

      1. $ rpm -qa | grep selinux
    2. 在/etc/selinux/config文件中设置变量SELINUX为“permissive”。这样能确保对SELinux的设置在系统重启之后依然生效。

      在RHEL 或者CentOS平台上:

      1. vi /etc/selinux/config

      修改如下行

      1. SELINUX=enforcing

      修改为:

      1. SELINUX=permissive
    3. 执行该命令无需系统重启就会将SELinux的运行模式设置为permissive。

      1. $ setenforce permissive
  7. 设置数据库. 下列的命令会在数据库中创建”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。

  1. <pre>cloudstack-setup-databases cloud:&lt;dbpassword&gt;@localhost \
  2. --deploy-as=root:&lt;password&gt; \
  3. -e &lt;encryption_type&gt; \
  4. -m &lt;management_server_key&gt; \
  5. -k &lt;database_key&gt; \
  6. -i &lt;management_server_ip&gt;
  7. </pre>
  8. 当脚本完成后,你将会看到类似这样的信息:”Successfully initialized the database”
  9. 注解
  10. 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.
  1. 如果你的KVM Hypervisor和管理服务器在同一台的机器上,编辑 /etc/sudoers并添加以下行:

    1. Defaults:cloud !requiretty
  2. 现在数据库已经设置好, 你可以完成管理服务器的设置. 这个命令将会设置iptables, sudoers并启动管理服务.

    1. # 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节点指定特定的分支。你可以选择使用任何一个操作系统的分支。建议与管理服务器使用相同的分支,但不做强制要求。参阅 “管理服务器, 数据库和存储系统要求”.

  1. 使用你部署的软件仓库安装MySQL:.

    1. yum install mysql-server
    1. apt-get install mysql-server
  2. 编辑MySQL的配置文件 (根据你操作系统的不同, 文件为/etc/my.cnf 或者/etc/mysql/my.cnf) 并在 [mysqld] 章节插入下面几行. 你可以把这几行放在datadir行下. 参数max_connections应该设置为 350 乘以你部署管理服务器节点的个数. 这个示例假定你只部署了一台管理服务器.

    注解

    在Ubuntu上,你也可以创建 /etc/mysql/conf.d/cloudstack.cnf文件并在此添加如下目录。不要忘记在文件第一行加[mysqld]。

    1. innodb_rollback_on_timeout=1
    2. innodb_lock_wait_timeout=600
    3. max_connections=700
    4. log-bin=mysql-bin
    5. binlog-format = 'ROW'
    6. bind-address = 0.0.0.0
  3. 启动或者重启MySQL使新的配置生效。

    在RHEL/CentOS上,MySQL在安装完后不会自动启动。手工启动它。

    1. service mysqld start

    在Ubuntu上,重启MySQL.

    1. service mysql restart
  4. (仅限CentOS 和 RHEL平台,对Ubuntu不作要求)

    警告

    在RHEL 和 CentOS上,MySQL默认并未设置root用户的密码。强烈建议您设置超级用户密码作为安全预防措施。运行以下命令进行安全配置。你可以对所有问题回答”Y”, “Disallow root login remotely?”问题除外。设置数据库需要root远程登录。

    1. mysql_secure_installation
  5. 如果系统中存在防火墙,打开TCP的3306端口用于建立MySQL连接。

    在Ubuntu上,默认防火墙是UFW。用以下命令打开端口:

    1. ufw allow mysql

    在RHEL/CentOS上:

    1. 编辑/etc/sysconfig/iptables文件并在INPUT链中添加下列行。

      1. -A INPUT -p tcp --dport 3306 -j ACCEPT
    2. 现在重新加载iptables规则。

      1. service iptables restart
  6. 返回到第一个管理服务器root用户的shell中。

  7. 设置数据库。按照如下命令在数据库中创建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。

  1. <pre>cloudstack-setup-databases cloud:&lt;dbpassword&gt;@&lt;ip address mysql server&gt; \
  2. --deploy-as=root:&lt;password&gt; \
  3. -e &lt;encryption_type&gt; \
  4. -m &lt;management_server_key&gt; \
  5. -k &lt;database_key&gt; \
  6. -i &lt;management_server_ip&gt;
  7. </pre>
  8. 当脚本完成后,你将会看到类似这样的信息:”Successfully initialized the database”