栏目头部广告

UCloud云数据库公网访问解决方案

一、应用背景

UCloud UDB云数据库在使用过程中,经常会有外网访问的需求,比如,进行数据跨地域迁移或者远程外网运维管理等场景。今天我将为大家介绍两种UCloud UDB云数据外网访问的实践方法。

温馨提示1:正常情况数据库属于业务的核心部分,不建议将数据库直接暴露到互联网上,如果非外网访问不可,建议通过防火墙增加源地址限制。强化四层防护,避免数据库被暴力破解从而引起业务数据泄露。

温馨提示2:强烈推荐NAT网关方式,NAT网关是集群部署,不存在单点故障风险,而且还支持绑定防火墙,加强数据库安全防护。

测试环境准备:UDB MySQL数据库:10.23.173.14;UHost数据库代理:内10.23.54.208/外113.31.104.199(mysql-proxy);UCloud NAT网关:113.31.106.251。

二、方案一:UCloud NAT网关

官网参考连接:https://docs.ucloud.cn/vpc/guide/natgw

2.1 UCloud NAT网关端口转发配置

NAT网关的创建步骤省略,详情可以参考官网。

image.png

2.2 UCloud外网防火墙安全加固

(1)选择NAT网关需要绑定的外网防火墙

image.png

默认会有两个默认防火墙,如果业务有特殊端口开放需求或安全配置,可以进行自定义。

image.png

外网防火墙配置页面:https://console.ucloud.cn/unet/ufirewall

image.png

注:这里我增加了源地址限制,通俗来讲,只允许106.75.254.35这个外网地址访问NAT网关转发的3306端口。其他IP的请求,一律拒绝。

2.3 访问测试

image.png

通过NAT网关配置端口转发,成功连接到了UDB MySQL云数据库。

三、方案二:UHost搭建mysql-proxy代理

3.1 CentOS7安装MySQL-Proxy

#(1)yum安装MySQL-Proxy
[root@10-23-54-208 ~]# yum install mysql-proxy -y

#(2)命令查看MySQL-Proxy信息
[root@10-23-54-208 ~]# mysql-proxy -V 
mysql-proxy 0.8.5
  chassis: 0.8.5
  glib2: 2.36.3
  libevent: 2.0.21-stable
  LUA: Lua 5.1.4
    package.path: /usr/lib64/mysql-proxy/lua/?.lua
    package.cpath: /usr/lib64/mysql-proxy/lua/?.so
-- modules
  proxy: 0.8.5

#(3)查看MySQL-Proxy帮助选项
[root@10-23-54-208 ~]# mysql-proxy -help -all
Usage:
  mysql-proxy [OPTION?] - MySQL Proxy

Help Options:
  -h, --help                                              Show help options
  --help-all                                              Show all help options
  --help-proxy                                            Show options for the proxy-module

Application Options:
  -V, --version                                           Show version
  --defaults-file=<file>                                  configuration file
  --verbose-shutdown                                      Always log the exit code when shutting down
  --daemon                                                Start in daemon-mode
  --user=<user>                                           Run mysql-proxy as user
  --basedir=<absolute path>                               Base directory to prepend to relative paths in the config
  --pid-file=<file>                                       PID file in case we are started as daemon
  --plugin-dir=<path>                                     path to the plugins
  --plugins=<name>                                        plugins to load
  --log-level=(error|warning|info|message|debug)          log all messages of level ... or higher
  --log-file=<file>                                       log all messages in a file
  --log-use-syslog                                        log all messages to syslog
  --log-backtrace-on-crash                                try to invoke debugger on crash
  --keepalive                                             try to restart the proxy if it crashed
  --max-open-files                                        maximum number of open files (ulimit -n)
  --event-threads                                         number of event-handling threads (default: 1)
  --lua-path=<...>                                        set the LUA_PATH
  --lua-cpath=<...>                                       set the LUA_CPATH

3.2 修改MySQL-Proxy配置

MySQL-Proxy默认端口为4040,通过访问4040端口就可以访问3306端

#(1)修改MySQL-Proxy配置
[root@10-23-54-208 ~]# vim /etc/mysql-proxy.cnf
[mysql-proxy]
daemon = true
pid-file = /var/run/mysql-proxy.pid
log-file = /var/log/mysql-proxy.log
log-level = debug
max-open-files =1024
plugins = admin,proxy
user= mysql-proxy
proxy-address=0.0.0.0:4040
proxy-backend-addresses=10.23.173.14:3306
admin-lua-script=/usr/lib64/mysql-proxy/lua/admin.lua
admin-username = root
admin-password = Ucloudcn123

#(2)配置文件保存后需要改变权限
[root@10-23-54-208 ~]# chmod 0660 /etc/mysql-proxy.cnf

#(3)启动MySQL-Proxy
[root@10-23-54-208 ~]# mysql-proxy --defaults-file=/etc/mysql-proxy.cnf

image.png

# 参数解读
admin-username=root         #admin用户名
admin-password=123fsck    #admin密码
admin-lua-script=/usr/lib64/mysql-proxy/lua/admin.lua    #lua位置,参见上面的版本信息
daemon=true          #mysql-proxy以守护进程方式运行
keepalive=true        #保持连接启动进程会有2个, 一号进程用来监视二号进程
proxy-backend-addresses=10.6.X.XX  #目标地址,udb内网地址,默认端口3306

3.3 访问测试

# 查看MySQL连接客户端版本
[root@mysql-proxy ~]# mysql --version
mysql  Ver 14.14 Distrib 5.6.51, for Linux (x86_64) using  EditLine wrapper

image.png

温馨提示:MySQL-Proxy不支持MySQL5.7、MySQL8.0的客户端连接代理,连接会直接hang住。仅支持MySQL5.6及以下版本MySQL客户端~

作者:UStarGao
链接:https://www.starcto.com/systemtool/311.html
来源:STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处

UCloud云平台推荐


UCloud新用户专属注册连接

UCloud CDN超值特惠专场

UCloud全球云主机(UHost/VPS)大促页面

UCloud快杰云主机大促页面

加载中~
文章详情页广告

随便看看

底部广告
`