网络管理
正如“网络通信”页面中所解释的,SmartEDB 7.1.1795 及更高版本允许使用 IPv6 地址协议来指定节点地址。以下部分描述了对于将使用了 SmartEDB 早期版本网络通信的应用程序移植到新版本的开发人员而言可能重要的问题。SSL 部分介绍了如何为网络通信启用 SSL 安全性。
IPv4 与 IPv6 的问题
对于将使用 7.1.1795 版本之前版本构建的应用程序移植到该版本的开发人员,应注意以下 API 更改:
- 属性 MasterConnection.ReplicaAddress.ip 的类型已从 int 更改为 String
- 属性 SqlServer.SessionInfo.peerAddr 的类型已从 int 更改为 String
- 向 SqlServer.OpenParameters 添加了一个新的参数 String netInterface
SSL 支持
若要启用 SSL 支持,应用程序必须填写 SSLParameters。对于 SmartEDB 高可用性,SSLParameters 在 MasterConnection.Parameters 和 ReplicaConnection.Parameters 类中进行设置。对于 SmartEDB 集群应用程序,SSLParameters 在 ClusterTCPParams 类中进行设置。(有关设置这些参数值的详细信息,请参阅 SSL 参数页面。)
一旦初始化了 SSLParameters,就调用静态的 Database 方法 sslInit() 和 sslLoadVerifyLocations()。这必须在创建 Database 对象之后但在建立 SSL 连接之前完成。
例如,一个 Java SmartEDB 高可用性主应用程序看起来会像下面这样:
Database db = new Database(config);
db.open("windowmst-db", parameters, DATABASE_SIZE);
MasterConnection con = new MasterConnection(db);
MasterConnection.Parameters ha_params = new MasterConnection.Parameters();
ha_params.SSLParameters = new Database.SSLParameters();
ha_params.SSLParameters.CertificateFile = "../../thlib/certs/client.crt";
ha_params.SSLParameters.PrivateKeyFile = "../../thlib/certs/client.key";
// X509_FILETYPE_PEM
db.sslInit();
db.sslLoadVerifyLocations(ca_file, ca_path);
con.setReplicationMode(ha_params);
// Start listener thread
Thread listenThread = new Thread(new ThreadStart(Listen));
listenThread.start();
而副本会是如下所示的样子:
Database db = new Database(config);
db.open("windowrpl-db", parameters, DATABASE_SIZE);
ReplicaConnection con = new ReplicaConnection(db);
ReplicaConnection.Parameters replParams = new ReplicaConnection.Parameters();
replParams.NotifyDelegate = new ReplicaConnection.ReplicaNotifyDelegate(notifier);
replParams.SSLParameters = new Database.SSLParameters();
replParams.SSLParameters.CertificateFile = "../../thlib/certs/client.crt";
replParams.SSLParameters.PrivateKeyFile = "../../thlib/certs/client.key";
// X509_FILETYPE_PEM
db.sslInit();
db.sslLoadVerifyLocations(ca_file, ca_path);
// Attach to master. Analog of mco_nw_attach_master
con.attachMaster(connectString, replParams, CONNECT_TIMEOUT);