首页 > 代码库 > Vertica7 Native Connection Load Balance

Vertica7 Native Connection Load Balance

原文链接:Vertica7 Native Connection Load Balance


在Vertica7以前的版本中,Vertica是通过Linux的Virtual IP来实现连接的负载均衡的,但是在Vertica7x中,Vertica本身提供了连接的负载均衡功能,这个功能用起来也是非常方便的,下面就来看看怎么使用这个功能。

1. 首先安装N个Vertica7的节点,然后用数据库管理员的身份运行下面的命令来让Vertica使用这个功能

SELECT SET_LOAD_BALANCE_POLICY(‘ROUNDROBIN‘);

如果需要disable这个功能,可以通过下面的命令
SELECT SET_LOAD_BALANCE_POLICY(‘NONE‘);

如果需要查看当前是否enable了这个功能可以使用下面的命令查看
SELECT GET_LOAD_BALANCE_POLICY();

服务器端的设置就这么多,下面看看客户端需要哪些步骤。

2. 首先必须使用vertica7的JDBC驱动,可以从Vertica的官方网站上下载。

3. 写个测试程序来测试连接,如下
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
 
public class VerticaTest {
    private static String USERNAME = "<user>";
    private static String PASSWORD = "<password>";
    private static String URL = "jdbc:vertica://<ip>:5433/<db>";
     
    public static void main(String[] args) throws Exception {
        Class.forName("com.vertica.jdbc.Driver");
        Properties props = new Properties();
        props.put("user", USERNAME);
        props.put("password", PASSWORD);
        props.put("ConnectionLoadBalance", 1);
        for (int x = 1; x <= 10; x++) {
            try {
                Connection conn = DriverManager.getConnection(URL, props);
                Statement stmt = conn.createStatement();
                ResultSet rs = stmt.executeQuery("SELECT node_name FROM v_monitor.current_session;");
                rs.next();
                System.out.println("Connected to node " + rs.getString(1).trim());
                conn.close();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
    }
}

这里特别注意下面一句,这一句设置了一个连接属性告诉Vertica的JDBC驱动使用负载均衡功能。

props.put("ConnectionLoadBalance", 1);

这里特别说一下,如果服务器上没有enable负载均衡功能,那么这个属性也不会影响正常的功能,只不过不使用负载均衡功能罢了。

4. 测试
运行这段代码,可以看到每次连接到的Vertica节点都会按照顺序变动。

另外也可以通过下面的sql来查询当前所有连接的情况。

select node_name, client_hostname from sessions;




Vertica7 Native Connection Load Balance