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