2014-06-05 35 views
0

我有客戶端 - 服務器應用程序,其中服務器需要從所有客戶端節點讀取數據。我所有的節點+服務器都在亞馬遜實例上。我想不出有更好的方法來設置客戶端與服務器進行通信。我目前有兩個可選:Mysql通信B/W兩個亞馬遜實例

一)SSH隧道

二)MySQL的聯合表格/發動機

我已經成功地建立SSH隧道,但我找了聯邦引擎基礎的解決方案。

我已啓用雙方的聯合引擎,但是當我嘗試連接失敗。問題是 如何設置聯邦引擎相互通信以及如何與mysql ssl相關。我們是否需要啓用並設置mysql ssl。

下面是我去:

客戶

create database FED_remote_db; 
use FED_remote_db; 
create table test_data(id int(11) auto_increment primary key, name varchar(20) , dated timestamp); 
create user 'fed_user'@'localhost' identified by 'somepassword'; 
grant select on FED_remote_db.* to 'fed_user'@'localhost' identified by 'somepassword'; 
flush privileges; 

服務器在服務器端

create database FED_server_db; 
use FED_server_db; 
create server fed_con foreign data wrapper mysql options(user 'fed_user',password 'somepassword',host 'client-ip-address',port 3307,database 'FED_remote_db'); 

create table test_data(id int(11) auto_increment primary key, name varchar(20) , dated timestamp) 
ENGINE=FEDERATED 
connection 'fed_chml/test_data'; 

測試

use FED_server_db; 
select * from test_data; 
ERROR 1429 (HY000): Unable to connect to foreign data source: Can't connect to MySQL server on 'client-ip-address' (110) 

*客戶端的IP地址是實際的IP地址

我需要能夠在服務器/客戶端的某個端口或改變mysql的配置結束?

如果我有SSH訪問客戶端如何幫助聯盟單位溝通?

回答

0

大多數情況下,如果EC2中的兩個實例之間存在通信問題,那麼這對安全組是個問題。我建議將兩臺機器放在同一個安全組中,並確保安全組添加到自己。

此外,我會研究,看看是否需要額外的端口,除了衆所周知的客戶端端口。