CloudBridge是SAE开发的VPN服务,开发者通过OpenVPN 客户端连接到CloudBridge之后,可以像使用本地服务一样使用SAE内网的一些服务,目前只有独享型MySQL可以只用。
1.CloudBridge介绍
1 SAE CloudBridge整体架构
CloudBridge包括了从外到内、内部以及从内到外的网络控制和安全隔离,从下图中可以看到,Controler负责各应用和资源间的网络流控制,而Forwarder则负责实际的代理转发。与某些IaaS中SDN不同的是,CloudBridge不依赖于特殊网络设备而实现在OS层,并且主要负责L2以上网络流控制。目前,项目中涉及VPC部分的Data Connection仍在开发中。完成后,将可以提供一套跨企业内外网的PaaS网络解决方案。
CloudBridge
2 服务限制
用户连接CloudBridge之后,CloudBridge中做了隔离,用户只能操作自己应用的数据。
CloudBridge对用户的带宽做了限制,带宽大小跟用户等级有关。
2.CloudBridge简单入门
由于该服务刚刚上线不久,相信很多小伙伴都很喜欢,但是又苦于没有教程。其实官方文档已经非常详细了,我这里只是在造个轮子而已。
1 初始化CloudBridge服务
非常简单,登陆你的SAE控制台,切换到CloudBridge服务,点击初始化即可。然后在控制台还可以查看accesskey和secretkey,待会有用。
cloudbridge
2 Window客户端
下载openVPN客户端,但是在国内呢,总是有一股神秘的力量阻挡着我们。这个不用担心,SAE的CloudBridge控制台已经可以下载了,我这里也会提供相应的安装包。不多说,下载后直接安装,我这里使用的是Window10测试,好了之后会在电脑桌面出现OpenVPN GUI客户端图标。
直接右键选择管理员打开,这时你可以在右下角任务栏看到openVPN的图标。但是右键点击却发现并没有connect的选项,这是为什么呢?
openVPN
原因就是没有配置文件,这时就要下载并且导入配置文件。
3 导入配置文件
在CloudBridge的控制台面板,下载配置文件,并且重新命名为client.ovpn,然后放到你的openVPN的安装目录下的config文件夹里面。这时你再右键一下即可出现connect选项
4 连接CloudBridge
很简单,点击connect选项,在弹出的对话框中输入用户名密码,用户名为应用的accesskey,密码为应用的secretkey,点击确定即可出现连接成功的提示。
CloudBridge
好了,现在你就已经成功连接上了CloudBridge服务,尽情使用吧。我们这里演示一下操作独享型MySQL服务。
3.独享型MySQL
1 新建MySQL实例
登陆SAE的控制台,切换到MySQL的面板,选择独享型MySQL。根据需要,初始化相应配置,这里选择微型的一主一从的实例
独享型MySQL
2 创建账号
初始化后SAE不会帮我们创建数据库账号,需要手动创建,该账号待会就是拿来连接使用的。
独享型mysql
3 创建数据库
同样,我们需要创建数据库,并且绑定用户,设置权限。
独享型mysql
好了,现在你就已经把SAE的独享型MySQL搬到你的本地环境中了,尽情使用吧。
4.使用CloudBridge连接独享型MySQL
1 MySQL控制台操作
这个需要你电脑上有安装MySQL。使用cmd切换到MySQL的bin目录,然后就可以使用常规命令连接独享型MySQL了
独享型MySQL连接
注意连接的时候那个主机是在控制台写着的,每个人的都不一样,然后端口是12150,用户名密码就是你刚才创建的账号。
做增删改查操作:
QQ截图20150915162234
QQ截图20150915162242
QQ截图20150915162420
2 Navicat操作
这个也是很简单,在控制台找到实例地址和端口,然后用你设置的账号和密码登陆即可。不过要注意的是,在连接的时候从库是只能查询的。
QQ截图20150915162606
插入和查询操作
QQ截图20150915162749
QQ截图20150915162908
可以看到,在连接从库的时候只能进行查询操作,而主库都可以
3 PHP程序操作
当然,数据库最好的还是使用程序来操作,当你做完了CloudBridge连接之后就相当于把独享型MySQL搬到了你的本地中。我写了一个类来操作:
/**
* SAE RDS本地操作类
* @data 2015-09-15
* @author summer
* @site http://www.xtwind.com
* @e-mail wenghang1228@me.com
*/
class SaeRds{
/**
* 定义主库实例名称
*/
private $masterName = null;
/**
* 定义从库实例名称
*/
private $slaveName = null;
/**
* 定义数据库用户名
*/
private $username = null;
/*
* 定义数据库密码
*/
private $password = null;
/*
* 定义数据库名
*/
private $dbName = null;
/**
* 全构造函数
*/
public function __construct($masterName = null, $slaveName = null, $username = null, $password = null){
$this->masterName = $masterName;
$this->slaveName = $slaveName;
$this->username = $username;
$this->password = $password;
}
/**
* 魔术设置
* @param string $name 属性名
* @param string $value 属性值
* @throws Exception
* @return void
*/
public function __set($name, $value){
if(property_exists(get_class(), $name)){
$this->$name = $value;
}else{
throw new Exception("Property not exists");
}
}
/**
* 魔术调用
* @param string $name 变量名
* @return string
*/
public function __get($name){
return $this->$name ?: false;
}
/**
* 获取主库PDO实例
* @throws Exception
* @return PDO
*/
public function getMaster(){
if(isset($this->masterName)){
return $this->connect($this->masterName);
}
throw new Exception("Master not defined");
}
/**
* 获取从库PDO实例
* @throws Exception
* @return PDO
*/
public function getSlave(){
if(isset($this->slaveName)){
return $this->connect($this->slaveName);
}
throw new Exception("Slave not defined");
}
/**
* 数据库连接
* $param string $db 连接的数据库实例名称
* @throws Exception
* $return PDO
*/
private function connect($db){
if(!$this->username | !$this->password | !$this->dbName){
throw new Exception("Some message not defined");
}
$dsn = 'mysql:host='.$db.'.rds.sae.sina.com.cn;dbname='.$this->dbName.';port=12150';
return new PDO($dsn,$this->username,$this->password);
}
}
然后测试用例:
/**
* @example 测试
*/
$t = new SaeRds();
try{
$t->masterName = 'yourmastername';
$t->slaveName = 'yourslavename';
$t->dbName = 'summer';
$t->username = 'yourusername';
$t->password = 'yourpassword';
$sql = 'select * from sum_user';
$ret = $t->getMaster()->query($sql)->fetchAll();
var_dump($ret);
}catch(Exception $e){
var_dump($e->getMessage());
}
可以得到如下的结果:
QQ截图20150915172341
总结
感谢SAE提供这么优秀的平台!
作者博客:夏天的风
原文地址:CloudBridge服务简单入门