云服务器 集群 弹性伸缩 微信接口 ip白名单
为节约成本,我们可以使用云服务器的弹性伸缩服务,平时维持一个比较低配置的服务器,设置好弹性伸缩,当流量大起来时候,自动伸缩一些云主机加入负载均衡的集群
遇到问题
微信早期使用上述方法没有问题,但是现在的微信默对公众号默认开启了ip白名单,难以这样简单的“弹性伸缩”,因为每个主机的ip是不一样的,目前没有一种方法可以把动态产生的ip放入微信后台
针对云服务器,给出以下方法
解决方法
配置私有网络
使用vpc私有网络,将动态生成的服务器都加入到vpc中去,走共同的出口,以保证微信的ip白名单通过- 新建私有网络
- 新建网关子网
- 新建内部子网
- 新建网关路由表
- 新建内部路由表
以上步骤中,网关不能和内网在同一网段,将内网路由表设置0.0.0.0/0到你的网关主机既可
弹性伸缩主机放在“内部子网”中
配置网关
首先,安装iptables
其次,执行echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf echo "echo 1048576 > /proc/sys/net/netfilter/nf_conntrack_max" >> /etc/rc.local echo "echo 262144 > /sys/module/nf_conntrack/parameters/hashsize" >> /etc/rc.local echo "iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE" >> /etc/rc.local echo "iptables -t mangle -A POSTROUTING -p tcp -j TCPOPTSTRIP --strip-options timestamp" >> /etc/rc.local
在/usr/local/sbin/目录下新建脚本set_rps.sh,将以下代码写入脚本中:
#!/bin/bash mask=0 i=0 cpu_nums=`cat /proc/cpuinfo |grep processor |wc -l` if(($cpu_nums==0));then exit 0 fi nic_queues=`cat /proc/interrupts |grep -i virtio0-input |wc -l` if(($nic_queues==0));then exit 0 fi echo "cpu number" $cpu_nums "nic queues" $nic_queues mask=$(echo "obase=16;2^$cpu_nums - 1" |bc) flow_entries=$(echo "$nic_queues * 4096" |bc) echo "mask = "$mask echo "flow_entries = "$flow_entries #for i in {0..$nic_queues} while (($i < $nic_queues)) do echo $mask > /sys/class/net/eth0/queues/rx-$i/rps_cpus echo 4096 > /sys/class/net/eth0/queues/rx-$i/rps_flow_cnt i=$(($i+1)) done echo $flow_entries > /proc/sys/net/core/rps_sock_flow_entries
然后执行
chmod +x /usr/local/sbin/set_rps.sh echo "/usr/local/sbin/set_rps.sh" >> /etc/rc.local
最后更新于 2018-02-18 14:36:57 并被添加「云服务器 集群 弹性伸缩 微信接口 ip白名单」标签,已有 807 位童鞋阅读过。
此处评论已关闭