代码改变世界

Vertica 高可用性测试

2016-03-02 12:59  AlfredZhao  阅读(1863)  评论(0编辑  收藏  举报

1.基本概念介绍

Vertica也是MPP架构的数据库,相比大家熟悉的MPP架构,比如Greenplum和hadoop这些产品,Vertica最大的不同就是没有主节点这个概念。 也就是说Vertica集群中(K-safe=1情况),任何一个节点宕机都不会影响到其他节点对外提供服务。 而在其他有主节点的架构中,一旦主节点挂掉,整个集群就会挂掉,所以还需要考虑进一步冗余主节点。

对架构有深入了解的朋友会问,没有主节点,那Vertica的元数据存放在哪里呢?
答案是存放在每一个节点中,因为元数据并不会很大,所以每个节点冗余元数据是可行的。

基于上面的理解,我们在一个3节点的Vertica集群测试环境中,任意停掉一个节点,其他节点都是可以对外提供服务的。

2.停止某节点服务

admintools 工具选择 “7 Advanced Menu” ,然后选 “2 Stop Vertica on Host” 或者 “3 Kill Vertica Process on Host”, 最后选择要停止服务的节点。 ``` admintools -> 7 Advanced Menu -> 2 Stop Vertica on Host / 3 Kill Vertica Process on Host -> Select host(s) ``` 注:在选择“2 Stop Vertica on Host” 或者 “3 Kill Vertica Process on Host”,优先选择前者,前者停不掉才考虑后者杀掉。 这里杀掉第二个节点的vertica进程。 ``` dbadmin=> select node_name, node_state from nodes; node_name | node_state -------------------+------------ v_testdb_node0001 | UP v_testdb_node0002 | DOWN v_testdb_node0003 | UP (3 rows) ```

3.测试其他节点访问

第二个节点宕机,但和预计的情况一样,从第一个节点和第三个节点的访问数据,都可以正常访问到。 ``` --说明节点1访问正常: [dbadmin@vertica1 ~]$ vsql Password:

--说明节点3访问正常:
[dbadmin@vertica3 ~]$ vsql
Password:

从节点2访问,会报错:

[dbadmin@vertica2 ~]$ vsql
vsql: could not connect to server: 拒绝连接
Is the server running on host "???" and accepting
TCP/IP connections on port 5433?

所以,应用端配置连接,建议不要简单的固定集群某个节点的IP地址,而应该想办法配置一组IP,实现当发现有IP地址不能访问,可以连接别的节点IP地址正常访问数据库的逻辑。