CloudBridge服务简单入门
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服务简单入门