uWSGI集群平台
来源:互联网 发布:记账软件下载 编辑:程序博客网 时间:2024/06/06 08:40
集群是uWSGI服务器的关键功能之一,该功能从0.9.7-dev开始提供。
首先我们看一个通过TCP套接字实现的简单应用:
./uwsgi -w werkzeug.testapp:test_app -s 192.168.173.100:3032 -M -p 4
现在我们想将应用程序移动到第二个服务器上,一个首要的问题就是第二个服务器需要第二个ip地址,这样由于两台机器的ip不同,因此就不可能通过NFS来共享一个xml文件来实现。
幸运的是,我们能够使用依赖于集群的魔术选项,例如:
./uwsgi -w werkzeug.testapp:test_app -s 192.168.173.*:3032 -M -p 4
这如你看到的,在ip地址中包含了一个*号,这意味着uWSGI服务器将会在本地机器中自动的搜索第一个可以的ip地址。
因此,我们同样可以在第二台机器上执行这条命令来启动第二个uWSGI服务器。这样启动问题就解决了。
现在我们的服务器已经启动运行了,但是其它的问题又可能有来了,例如,我们想对uWSGI服务器进行调整,那么每一次的调整,即进行修改,都必须在第二台uWSGI服务器上做同样的操作,并且都需要重新载入。看一下怎么解决这个问题。
下面是一个uWSGI集群结构:
在这个结构中我们假如有4个节点:
node1 192.168.173.100
node2 192.168.173.101
node3 192.168.173.102
node4 192.168.173.103
在node1上启动uWSGI,但是这次要选择一个"集群名称",集群的名称是一个简单的多播地址,这个地址将会被这个集群内的所有集群所共享。在这里我们将选择225.1.1.1:3333地址,这个地址可以随便选择,但前提条件必须是在我们环境中所没有使用的一个多播地址,例如(这里我们假设在node1上执行):
./uwsgi -w werkzeug.testapp:test_app -s 192.168.173.*:3032 -M -p 4 --cluster 225.1.1.1:3333
好了,我们的集群启动了,但是这意味着什么呢?
从现在开始,集群中所有的节点都将会共享这些选项,因此,在node2、 node3 和 node4上只需简单的运行以下命令:
./uwsgi --cluster 225.1.1.1:3333
集群中的各个节点将会从已经启动的任何一个节点上获取配置(在这里具体的就是node1)。那么在集群中所有的节点都正常启动并且运行后,如果node1死掉会出现什么问题?没关系,即使node1宕机,而其它的服务器,比如 node3要重启,它还可以从node2或者node4上获取配置。
下面我们看两个选项--cluster-reload和--cluster-log。
如果我们删除一些不需要的配置文件,或者是编辑一些配置文件,那么每一次类似这样的事情都得对集群中的每一个uWSGI实例进行重新启动?不用那么麻烦,只需在其中的一个实例上简单的执行以下命令就可以了:
./uwsgi --cluster-reload 225.1.1.1:3333
这条命令执行后,所有集群中的节点都将会被重新载入。这就是--cluster-reload的功能。
另一个有用的选项是 --cluster-log,通过该选项可以向集群中的所有实例发送消息,并且所有节点都会将其记录到它们的日志。
例如:
echo "i love uWSGI" | ./uwsgi --cluster-log 225.1.1.1:3333
在这个例子中,我们通过在标准的输入设备用echo命令将字符串在通过管道传递给uWSGI,然后会组播到各个实例。
uWSGI代理
uWSGI服务器包含了一个高性能的路由/代理/负载均衡器。对于uWSGI代理服务器而言,集群对它完全支持。只要在启动时添加一个--cluster选项那么将会自动的添加或者是移除一个节点。例如:
./uwsgi --proxy 127.0.0.1:3031 --cluster 225.1.1.1:3333
这样启动之后,简单的将127.0.0.1:3031指向了文本服务器 uwsgi处理程序,并且也会自动添加节点,而且会实现负载均衡和健康检查。
- uWSGI集群平台
- RHEL6 下搭建 nginx + uwsgi + cgi 平台
- uwsgi
- Web服务器:Linux平台 + Nginx + uWSGI 安装,配置,解析,教程
- Java集群平台terracotta
- 集群管理平台安全问题
- 虚拟产业集群平台上线
- HPC集群平台搭建概念
- Matlab 集群计算平台搭建
- Matlab 集群计算平台搭建
- MATLAB集群计算平台搭建
- 攻击容器集群管理平台
- uWSGI与uwsgi协议
- WSGI uWSGI uwsgi
- WSGI / uwsgi / uWSGI
- MySQL集群---②Windows平台搭建MySQL CLUSTER集群
- nginx + uwsgi
- virtualenv uwsgi
- 初识测试
- Load Caffe framework models
- 计算机网络 -- TCP/UDP详解(传输层)
- 面向对象的六原则 一法则简述
- C++实验5-数组分离
- uWSGI集群平台
- 机顶盒的第二天。
- JSON.parse()与JSON.stringify()
- verilog入门
- CSS实现常用菜单(一)
- 继承体系下C++对象模型.md
- 集合(上)(List的学习)
- Linux下的MySQL主主复制和Mysql-MMM实现(Mysql双主多从高可用)
- selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH