架构的选型 scale up 向上扩展 scale out 平行扩展 优缺点
scale up 现有程序不需要修改 成本巨大 硬件有极限
scale out 可以节约硬件成本 技术相对复杂 需要对原先的软件进行重写
nginx 负载均衡配置
在服务器上的 /user/local/nginx/cong/nginx.conf
upstream www.bbs.com{
// ip_hash;
server 192.168.0.4:80 weight=5;
server 192.168.0.5:80 weight=1;
server 192.168.0.6:80 weight=1;
}
server{
location /{
proxy_pass http://www.bbs.com;
}
}
redis 实现session共享
在实体机的php.ini修改
session.save_handler = redis
session.save_path = "tcp://储存redis数据的服务器的IP地址:6379"
在储存redis数据的服务器 修改以上 并且 需要把bind 中的127.0.0.1 的IP地址更改成 自己的IP地址
keeppalived 实现高可用
安装(两台负载均衡器都要安装) 使用 ip addr 查询网卡数量和网卡对应的IP地址 如果是两块 按以下操作方式 如果是多块
到 http://www.keepalived.org/download.html 使用wget 下载最新版本
遇到错误 去https://blog.youkuaiyun.com/l1028386804/article/details/72800770 安装对应 yum
yum -y install gcc pcre-devel zlib-devel openssl-devel popt-devel
tar zxvf keepalived-1.2.7.tar.gz
cd keepalived-1.2.7
./configure
make
make install
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir -p /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/sbin/keepalived /usr/sbin/
配置keepalived
vi /etc/keepalived/keepalived.conf
priority 101 #Master值要大于Bakcup
enso 的值改成使用ip addr 查到的值
virtual_ipaddress {
192.168.1.200 #虚拟IP
}
-----------------------------------------------------------
启动: /etc/init.d/keepalived start
rsync+inotify文件实时同步
首先将压缩包上传到对应的服务器
在代码发布服务器上安装inotify 在所有服务器上安装rsync,命令如下:
tar zxvf rsync-3.0.9.tar.gz
tar xzvf inotify-tools-3.14.tar.gz cd rsync-3.0.9
cd inotify-tools-3.14 ./configure
./configure make
make make install
make install
在代码发布的服务器上与需要同步的服务器之间要配置 ssh key 信任 在代码发布服务器上要生成公钥和私钥
使用 ssh-keygen -t rsa 直接回车三次
在将公钥拷贝到 需要更新文件的主机上
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.252#需要同步的服务器IP
这时在需要同步的服务器上就会看到 authorized_keys文件
在代码发布服务器上以root身份创建inotify_rsync.sh脚本vi /root/inotify_rsync.sh 输入
#!/bin/sh
SRC=/data/www/ #代码发布服务器目录
DST=/data/www/ #目标服务器目录
IP="192.168.0.5 192.168.0.6" #目标服务器IP,多个以空格隔开
USER=root
/usr/local/bin/inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T
%w%f %e' --exclude "(.swp|.swx|.svn)" \
-e create,move,delete,close_write,attrib $SRC | while read files
do
for i in $IP
do
/usr/local/bin/rsync -ahqzt --exclude Runtime --delete $SRC $USER@$i:$DST
echo $files >>/tmp/rsync.log 2>&1
done
done
然后赋予脚本可执行权限 chmod +x /root/inotify_rsync.sh
执行脚本/root/inotify_rsync.sh &
如果失败 执行以下命令
然后在执行 /root/inotify_rsync.sh &
完成