使用Amazon RDS设置Opsview
亚马逊的官方网站表示,RDS(关系数据库服务)是一个Web服务,可以轻松地在云中建立,运行和扩展关系数据库,它提供了具有成本效益和可调整大小的容量,同时管理耗时的数据库管理任务,让您专注于您的应用程序和业务。“
换句话说,您可以通过Amazon Web服务控制台部署“在云中”数据库,并指定许多不同的变量,例如“实例类”(应该如何强大),自动备份,多区域部署,等等(对于那些想要确保高可用性和弹性的人来说,这是一个很酷的东西,这是云计算的主要担忧)。
部署新的RDS数据库很少。 首先(假设您已经有一个AWS帐户等),您必须导航到RDS部分,然后单击“启动数据库实例”将提供如下页面:
在我们的示例中,我们使用MySQL(因为我们不支持Oracle或Microsoft SQL Server)。 点击“选择”后,我们必须在我们的示例中输入我们的“DB实例详细信息”,如下所示:
如上所述,我们选择了“MySQL 5.6.12”和db.m1.medium的实例类(此时纯粹是任意选择)。 我们还选择了仅10GB的存储空间,没有提供IOPS和一些参数(实例ID,用户名和密码)如下:
- 数据库实例标识符:opsviewdbseparate
- 主用户名:opsviewrw
- 主密码:opsview123
接下来,我们需要选择一些关于“附加配置”的细节,如区域,数据库端口,VPC(如果我们使用Opsview Pro / Enterprise **,必须使用VPC)等。
一旦这一切都完成,我们将有一个完全配置的10GB MySQL 5.6数据库运行如下:
在我们开始使用这个数据库之前,我们必须允许自己访问数据库,所以让我们点击“安全组:默认”,然后点击“放大镜”,这将使我们到一个标题为“安全组详细信息”的页面。 在这里,我们需要确保我们的CIDR范围,或者只是选择我们希望应用的安全组,以允许入站访问。 而且应该是在RDS端配置完成!
配置我们的RDS DB以进行Opsview
接下来,我们必须SSH到我们的Opsview服务器,并将数据库从它迁移到RDS DB - 遵循迁移指南。
首先,我们必须停止Opsview获取“一致的快照”:
/etc/init.d/opsview stop
/etc/init.d/opsview-web stop
接下来,我们需要备份和恢复。 在文档中,我们应该将mysqldump,转移到我们的数据库主机,然后将其加入到MySQL中 - 但是,这在RDS中是不可能的,因为我们没有shell访问它下面的服务器 - 所以我们必须要更聪明一点我们怎么做
首先,让我们测试我们可以从Opsview登录到RDS DB:
root@opsview-master:/home/ubuntu# mysql -u opsviewrw -p -h opsviewdbseperate.ctw1cn2efche.eu-west-1.rds.amazonaws.com -P 3306
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 141
Server version: 5.6.12 MySQL Community Server (GPL)
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
对我好看 接下来,我们需要在RDS数据库上创建数据库 - 非常简单:
create database opsview;
create database odw;
create database runtime;
create database dashboard;
这创建了我们需要的4个数据库。 现在我们可以剔除对RDS DB的shell访问权限,并在Opsview服务器上运行mysqldump,将数据库转储到远程RDS数据库中,如下所示:
mysqldump -u root -p opsview | mysql -u opsviewrw -popsview123 --host=opsviewdbseperate.ctw1cn2efche.eu-west-1.rds.amazonaws.com -P 3306 -C opsview
mysqldump -u root -p runtime | mysql -u opsviewrw -popsview123 --host=opsviewdbseperate.ctw1cn2efche.eu-west-1.rds.amazonaws.com -P 3306 -C runtime
mysqldump -u root -p odw | mysql -u opsviewrw -popsview123 --host=opsviewdbseperate.ctw1cn2efche.eu-west-1.rds.amazonaws.com -P 3306 -C odw
mysqldump -u root -p dashboard | mysql -u opsviewrw -popsview123 --host=opsviewdbseperate.ctw1cn2efche.eu-west-1.rds.amazonaws.com -P 3306 -C dashboard
mysqldump -u root -p opsview | mysql -u opsviewrw -popsview123 --host=opsviewdbseperate.ctw1cn2efche.eu-west-1.rds.amazonaws.com -P 3306 -C opsview
mysqldump -u root -p runtime | mysql -u opsviewrw -popsview123 --host=opsviewdbseperate.ctw1cn2efche.eu-west-1.rds.amazonaws.com -P 3306 -C runtime
mysqldump -u root -p odw | mysql -u opsviewrw -popsview123 --host=opsviewdbseperate.ctw1cn2efche.eu-west-1.rds.amazonaws.com -P 3306 -C odw
mysqldump -u root -p dashboard | mysql -u opsviewrw -popsview123 --host=opsviewdbseperate.ctw1cn2efche.eu-west-1.rds.amazonaws.com -P 3306 -C dashboard
接下来,我们必须在Opsview主机上编辑/usr/local/nagios/etc/opsview.conf
,指向新的RDS DB:
root@opsview-master:/home/ubuntu# cat /usr/local/nagios/etc/opsview.conf
# # This file overrides variables from opsview.defaults # This file will not be overwritten on upgrades # $dbhost = "opsviewdbseperate.ctw1cn2efche.eu-west-1.rds.amazonaws.com"; $odw_dbhost = "opsviewdbseperate.ctw1cn2efche.eu-west-1.rds.amazonaws.com"; $runtime_dbhost = "opsviewdbseperate.ctw1cn2efche.eu-west-1.rds.amazonaws.com"; $reports_dbhost = "opsviewdbseperate.ctw1cn2efche.eu-west-1.rds.amazonaws.com"; $dashboard_dbhost = "opsviewdbseperate.ctw1cn2efche.eu-west-1.rds.amazonaws.com";
几乎现在! 接下来,我们需要设置RDS数据库的访问权限。 再次,我们不能将它导出到一个文件,传输文件,并导入它 - 所以我们必须聪明的管道:
/usr/local/nagios/bin/db_mysql -t | mysql -u opsviewrw -popsview123 -h opsviewdbseperate.ctw1cn2efche.eu-west-1.rds.amazonaws.com -P 3306
这将获得我们的凭据并将其导入RDS数据库(以下这些凭据的快照如下):
GRANT ALL ON opsview.* TO opsview@localhost IDENTIFIED BY '508E67C6-DA75-11E2-882D-94E35B00F56E' WITH GRANT OPTION; GRANT ALL ON opsview.* TO opsview@'%' IDENTIFIED BY '508E67C6-DA75-11E2-882D-94E35B00F56E' WITH GRANT OPTION; GRANT SELECT ON opsview.* TO odw@'%' IDENTIFIED BY '508E67C6-DA75-11E2-882D-94E35B00F56E';
最后,我们需要重新生成Opsview配置并重新启动Web服务,使用以下命令:
/usr/local/nagios/bin/rc.opsview gen_config /etc/init.d/opsview-web start
这就是完成的配置。 我们可以停止本地运行的MySQL服务器(服务mysql停止等等,具体取决于您的操作系统),然后登录到Opsview以查看它运行的所有荣耀,现在在RDS存储:
我已经用上面的例子来显示历史数据被迁移(证明它),而且数据中没有任何昙花一现(没有大的损失等)。
结束想法
所以这是将Opsview数据库迁移到Amazon RDS的一种快速简单的方法 - 如果您在云端运行,可以为数据库后端提供更好的可扩展性,可靠性和易用性。 接下来,我将看一下在VPC中运行Opsview,以及我们如何设置。