岛屿可以找到海
岛屿可以找到海

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

最近阿里云白嫖了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会自动分配到其它服务器上来处理请求。

发表回复

textsms
account_circle
email

岛屿可以找到海

简易版负载均衡(包括redis、mysql)
最近阿里云白嫖了1年的香港轻量云服务器,一直想试试负载均衡是一种什么样的体验, 服务器安装好必要环境后就开始配置了。 要做负载均衡的项目: 一个简易的GPT站点,无需登陆即…
扫描二维码继续阅读
2024-03-28