目前云数据库Memcache是需要通过ECS的内网进行连接访问,如果用户本地需要通过公网访问云数据库Memcache,可以在ECS Windows云服务器中通过netsh进行端口映射实现。
一、搭建要求:
1、阿里云有OCS实例
2、阿里云有ECS服务器
3、OCS跟ECS在同一个账号下,可以内网访问
二、实验环境(IP和账号为假的):
服务器版本:Windows Server 2008 R2 Standard Service Pack1(64位)
服务器公网IP地址:115.99.190.68
OCS内网地址:6aecb9ba8378863e4.m.cnhzaliqshpub001.ocs.aliyuncs.com
OCS访问账号:6aecb9ba8378863e4
OCS访问端口:11211
在cmd命令行中执行如下命令:
1、添加端口映射
netsh interface portproxy add v4tov4 listenaddress=115.99.190.68 listenport=11211 connectaddress=6aecb9ba8378863e4.m.cnhzaliqshpub001.ocs.aliyuncs.com connectport=11211
你在自己服务器上执行命令的时候,把监听的公网地址listenaddress,监听端口listenport,改成自己对应的公网地址,把连接地址connectaddress改成自己OCS的内网访问地址,connectport端口也改成自己OCS的连接端口即可。
通过以上命令,所有发往服务器115.99.190.68,端口11211的数据都会转发到映射的服务器和端口上。
在本地开发调试的时候,直接指定OCS的访问地址,端口,账号和密码使用就可以了,能方便的调试使用OCS的功能,便于查找错误,在发布到服务器以后,也不需要修改程序的配置,更不需要在本地安装Memcached相关的软件,保证开发的环境跟上线的环境一致。
3、如果你开发调试完成了,记得在服务器上删除相关的映射
删除映射,使用命令:netsh interface portproxy delete v4tov4 listenaddress=115.99.190.68 listenport=11211
IP地址,换成自己映射时的IP地址就可以了。
4、查看已经映射的端口
使用命令:netsh interface portproxy show all
四、自己服务器的防火墙:11211端口记得加上,开启起来。
五、更改Web.Config里面配置
<memcacheddebug protocol="Binary">
<servers>
<add address="aecb9ba8378863e4.m.cnhzaliqshpub001.ocs.aliyuncs.com" port="11211" />
</servers>
<socketPool minPoolSize="10" maxPoolSize="200" connectionTimeout="00:00:4" deadTimeout="00:02:00" />
<authentication type="Enyim.Caching.Memcached.PlainTextAuthenticator, Enyim.Caching" zone="" userName="12123131" password="123131" />
</memcacheddebug>
改成如下
<memcacheddebug protocol="Binary">
<servers>
<add address="115.99.190.68" port="11211" />
</servers>
<socketPool minPoolSize="10" maxPoolSize="200" connectionTimeout="00:00:4" deadTimeout="00:02:00" />
<authentication type="Enyim.Caching.Memcached.PlainTextAuthenticator, Enyim.Caching" zone="" userName="12123131" password="123131" />
</memcacheddebug>