简易版负载均衡(包括redis、mysql)

  • A+
所属分类:网站技巧

最近阿里云白嫖了1年的香港轻量云服务器,一直想试试负载均衡是一种什么样的体验,

服务器安装好必要环境后就开始配置了。

要做负载均衡的项目:

一个简易的GPT站点,无需登陆即可对话,无感知的存储用户与GPT的对话记录,通过sessionId存储到redis中,设置一个1天过期的实效,用户如若无新对话自动会删除键。

mysql数据库用来存储请求openai的key,因为有多个key轮询请求,加上网站的一些内容需要动态展示所以放到了数据库中,还存储着用户使用GPT4时的密钥,并且在请求GPT成功响应200后进行密钥次数扣除。

开始配置

首先配置主服务器mysql能被别的服务器连接访问

GRANT ALL PRIVILEGES ON *.* TO '用户名'@'允许连接的ip' IDENTIFIED BY '密码' WITH GRANT OPTION;
flush privileges;//刷新

配置redis能被远程连接访问

打开配置文件/www/server/redis/redis.conf

将 bind 127.0.0.1 注释了

将 protected-mode的yes改为no

在requirepass后设置你的redis连接密码

最后在主机设置nginx配置负载均衡

upstream GPT {
    #upstream 后面的名字可以随便起
    ip_hash;#分配模式,同一ip的请求会分配到同一个服务器上,还有别的选项你们可以查下
    server 127.0.0.1:8787;#你的主机项目端口
    server xxxxxxxxx:8787;#其它服务器项目端口
}

server {
  server_name 站点域名;
  listen 80;
  access_log off;
  root /your/public;

  location ^~ / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_http_version 1.1;
      proxy_set_header Connection "";
      if (!-f $request_filename){
          proxy_pass http://GPT;#上面起的名字和下面一样就行
      }
  }
}

至此配置完毕,如何检测负载均衡生效呢?最简单的方法,把主机的项目关了,看看项目是否还能运行,原则上来说,主机项目停止之后nginx会自动分配到其它服务器上来处理请求。

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: