记一次Nginx代理Mysql服务的经历

2023-09-18 2,521 0

背景:

根据组长背景描述,具备以下前提

  1. Mysql服务器为 某A云厂商的RDS SAAS服务,但是不开通外网服务

  2. EC2 服务器一台,某A云厂商LaaS服务,也不开通外网

3.阿里云服务器一台,这台服务器有服务需要连接Mysql服务

需求: 让阿里云服务器中的服务,可以访问到Mysql服务。

**解决方案:**在A云厂商的EC2服务器中,部署Nginx服务,有Nginx服务代理Mysql服务

**前提需要:**EC2服务器能够访问Mysql服务,阿里云服务器能够访问EC2服务,它们之间的网络可以连通

方案搭建

注意Nginx,尽量不要使用yum方式来安装,为什么呢?

Mysql服务不是Http连接,需要使用Upstream这个模块,yum方式安装的nginx不好再次去配置和安装upstream,尽量使用编译方式来安装;本文以编译方式来安装

1. 编译安装Nginx

需要确保具备wget这个命令

cd /tmp/

2.查漏补缺安装

我下载好后直接编译

sudo ./configure --prefix=/usr/local/nginx-my-stream/nginx1.22.1 --with-stream --with-http_stub_status_module --with-http_ssl_module

报错如下 ,缺少gcc等编译工具

可以按照提示,缺少什么就安装什么,可以直接以空格分割 一次性安装完毕

sudo yum -y install gcc

3.编译

sudo ./configure --prefix=/usr/local/nginx-my-stream/nginx1.22.1 --with-stream --with-http_stub_status_module --with-http_ssl_module --without-http_rewrite_module

编译成功是不带有error灯关键字的,哪里缺少就会到第二步,yum install -y 缺少的模块

4. 安装

输入如下命令

sudo make

看到如下界面就是配置成功,如果有error关键字,就重新看下详细信息,我当时没有加sudo 就报错了

5.启动

通过上述安装成功的命令可以查看到,已经安装到下述这个目录中,配置文件在这个目录下的conf下

/usr/local/nginx-my-stream

进入/usr/local/nginx-my-stream/nginx1.22.1/sbin/nginx目录,使用命令

1. sudo /usr/local/nginx-my-stream/nginx1.22.1/sbin/nginx

2. 检查服务是否启动 ps -aux | grep nginx

当然应该也可以配置成systemctl方式启动,我懒得配了,有兴趣的同学可以再去研究

6.配置Nginx代理Mysql服务

这个代码段可以放到http代码段的上面,要和http这个块平级

#mysql  地址映射
stream {

    upstream mysql {
        server IP地址:3306 weight=1 max_fails=2 fail_timeout=30s;   #原Mysql地址
    }

    server {
        listen 3306;
        proxy_connect_timeout 30s;
        proxy_timeout 30s;
        proxy_pass mysql;
    }
}

7.测试连接

此时在阿里云服务器中安装yum install mariadb105-server -y,用以连接Mysql测试

输入命令,根据命令输入密码,即可通过跳板机连接到RDS Mysql数据库 

mysql -h  跳板机IP  -P 3306 -u root -p

相关文章

集群压测体系搭建-实时监控平台(2)
密码保护:Metersphere使用实践,优缺点分析
密码保护:MS自动化测试框架调研
Jenkins中自动化创建Jira任务
集群压测体系搭建-Jmeter集群(1)
Selenium+Jenkins+Allure 自动化测试并产生报告

发布评论

Index