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


    背景:

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

    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/

    wget http://nginx.org/download/nginx-1.22.1.tar.gz

    tar xf nginx-1.22.1.tar.gz

    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

    sudo yum -y install gcc-c++

    sudo yum -y install openssl openssl-devel

    sudo yum -y install openssl*

    sudo yum install -y zlib-devel

    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

    sudo make install

    看到如下界面就是配置成功,如果有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这个块平级

    1. #mysql 地址映射
    2. stream {
    3. upstream mysql {
    4. server IP地址:3306 weight=1 max_fails=2 fail_timeout=30s; #原Mysql地址
    5. }
    6. server {
    7. listen 3306;
    8. proxy_connect_timeout 30s;
    9. proxy_timeout 30s;
    10. proxy_pass mysql;
    11. }
    12. }

    7.测试连接

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

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

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

  • 相关阅读:
    机器学习EM算法
    Docker实战教程 第1章 Linux快速入门
    C# OpenVino Yolov8 Pose 姿态识别
    【企业管理战略方案设计】经营驱动与管理控制相结合
    OpenCV + sklearnSVM 实现手写数字分割和识别
    【图解HTTP】HTTP请求报文和响应报文
    工业互联网产品需求分析
    刷题分享—常见的经典面试题二
    Golang入门笔记(14)—— 错误处理
    SpringMvc源码分析-请求流程(一)
  • 原文地址:https://blog.csdn.net/qq_36622490/article/details/132692888