`
zsxxsz
  • 浏览: 451044 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用 acl 库编写负载均衡服务的配置指南

阅读更多

      在文章《使用 acl 服务器框架编写负载均衡的应用服务》中介绍了 acl TCP 连接分配器的作用及原理,本节主要介绍 TCP 连接分配器的配置方法,及使用 acl 的服务器模板创建的应用服务子进程的配置方法(目前支持该功能的服务器模板有:线程池服务模板、协程服务模板以及非阻塞服务模板)。

     一、TCP连接分配器的配置要点

     TCP 连接分配器即 master_dispatch 程序,该程序也是一个服务进程,负责接收外部客户端的TCP连接,同时将该连接通过 UNIX 域套接口传递给后面的应用服务进程,该程序在 acl 库的 acl/app/master_dispatch/server 目录下。

      master_dispatch 程序本身是基于非阻塞服务器模板编写,其中的配置项 aio_xxx 属于非阻塞服务器模板配置项,master_xxx 属于通用服务配置项,其中 master_service 配置项指明了 master_dispatch 监听的服务地址,如:master_service = 80, dispatch.sock, 1080,该配置指明 master_dispatch 同时监听 80 TCP 端口、dispatch.sock UNIX 域套接口及 1080 TCP 端口。外部客户端连接 80 端口,后端服务应用子进程连接 dispatch.sock 与 master_dispatch 进行通信。

      关于 master_dispatch 应用本身的配置项说明如下:

      1.1、backend_service = dispatch.sock

      该配置项指明了后端应用服务子进程将会连接该 UNIX 域套接口,一方面应用服务进程向 master_dispatch 汇报自己的 TCP 连接数、总线程数、繁忙线程数等信息,该配置项的值必须与 master_service 中监听的 UNIX 域套接口保持一致;

      1.2、manager_timer = 1

      该配置项指明 master_dispatch 每隔 1 秒检测接收到的且未被传递给后端应用服务进程的 TCP 连接,尝试将这些连接再次传递给后端应用服务进程,同时将超时未传递的连接关闭,这样做的好处是当后端应用服务进程重启时依然可以接收外部客户端的连接,因为这些 TCP 连接暂时由 master_dispatch 保持着;

      1.3、conn_expired = 10

      该配置项指明当一个 TCP 连接由 master_dispatch ”保持“的超时时间为 10 秒,即超过 10 秒依然未被传递给后端应用服务进程的 TCP 连接将被 master_dispatch 强行关闭,而 TCP 连接一旦传递给后端应用服务进程则 master_dispatch 则将其从本身的缓存队列中删除;

      1.4、status_servers = 127.0.0.1:10081

      该配置项指定了 dispatch_mananger(用来收集缓存所有 master_dispatch 节点信息的服务进程)监听的服务地址,该配置项可以同时配置多个 dispatch_manager 的监听地址,格式为:ip1:port, ip2:port ...;

      1.5、status_timer = 2

      该配置项指定 master_dispatch 定期向 dispatch_manager 汇报状态的时间间隔为 2 秒;

      1.6、status_service = 1080

      该配置项指定 master_dispatch 可以在 1080 端口接收其它应用的状态查询请求,即 master_dispatch 不仅可以向 dispatch_manager 发送状态数据,同时也可以接收其它模块的状态请求;

      1.7、server_timer = 1

      该配置项指定 master_dispatch 每隔 1 秒汇总一下后端应用服务子进程的状态(总 TCP 连接数,总线程数,总繁忙线程数等);

      1.8、service_name = app_service_name

      该配置项指定 master_dispatch 所代表的服务节点的应用名称。

      1.9、aio_access_allow = all

      除了以上配置项外,还需检查 aio_access_allow 配置项是否为 all,该配置项指定允许连接 master_service 配置的 80 端口的客户端 IP 地址。

 

      二、线程池服务器配置要点

      2.1、ioctl_dispatch_addr = /opt/acl/var/private/dispatch.sock

      该配置项指定 master_dispatch 进程监听的 UNIX 域套接口地址的全路径,线程池服务进程连接该地址与 master_dispatch 进行通信,汇报自己的状态(TCP连接数,线程数及繁忙线程数等),同时通过此 UNIX 域套接口从 master_dispatch 接收外部客户端连接;

      2.2、ioctl_dispatch_type = app_service_name

      该配置项指定本线程池服务的应用名称,一般与所属的 master_dispatch 中的 service_name 配置项相同即可;

      2.3、master_maxproc = 1

      该配置项指定进程池最大进程数;

      2.4、master_prefork = 1

      该配置项指定预启动的进程数,一般与 master_maxproc 相同即可,因为需要应用服务进程连接 master_dispatch 以便建立 UNIX 域套接口,所以要求此配置必须打开。

 

      三、非阻塞服务器配置要点

      3.1、aio_dispatch_addr = /opt/acl/var/private/dispatch.sock

      该配置项指定 master_dispatch 进程监听的 UNIX 域套接口地址的全路径,非阻塞服务进程连接该地址与 master_dispatch 进行通信,汇报自己的状态(TCP连接数等),同时通过此 UNIX 域套接口从 master_dispatch 接收外部客户端连接;

      3.2、aio_dispatch_type = app_service_name

      该配置项指定本非阻塞服务的应用名称,一般与所属的 master_dispatch 中的 service_name 配置项相同即可。

      3.3、master_maxproc = 1

      该配置项指定进程池最大进程数;

      3.4、master_prefork = 1

      该配置项指定预启动的进程数,一般与 master_maxproc 相同即可,因为需要应用服务进程连接 master_dispatch 以便建立 UNIX 域套接口,所以要求此配置必须打开。

      四、协程服务器配置要点

      4.1、fiber_dispatch_addr = /opt/acl/var/private/dispatch.sock

      该配置项指定 master_dispatch 进程监听的 UNIX 域套接口地址的全路径,协程服务进程连接该地址与 master_dispatch 进行通信,汇报自己的状态(TCP连接数等),同时通过此 UNIX 域套接口从 master_dispatch 接收外部客户端连接;

      4.2、fiber_dispatch_type = app_service_name

      该配置项指定本协程服务的应用名称,一般与所属的 master_dispatch 中的 service_name 配置项相同即可。

      4.3、master_maxproc = 1

      该配置项指定进程池最大进程数;

      4.4、master_prefork = 1

      该配置项指定预启动的进程数,一般与 master_maxproc 相同即可,因为需要应用服务进程连接 master_dispatch 以便建立 UNIX 域套接口,所以要求此配置必须打开。

      至此,后端应用服务子进程及 TCP 连接分配器(master_dispatch)的配置要点基本讲完,使用 master_dispatch 的好处是可以保证分配给后端每个服务子进程的 TCP 连接是均匀的。同时需要注意以下几点:

      1、每个 master_dispatch 进程仅能与一个应用服务子进程绑定,该应用服务子进程可以启动多个进程;

      2、应用服务子进程自己监听的服务地址(由 master_service 指定)依然可以接收外来客户端连接,如果不想客户端连接该地址,可以将其配置为回路地址,如:master_service = 127.0.0.1:8888;

      3、应用服务子进程必须开启进程预启动功能(即将 master_prefork 设为与 master_maxproc 相同的值)。

 

      参考:

        《使用 acl 服务器框架编写负载均衡的应用服务

        《acl 服务器开发栏目

      下载:
        acl 库下载:https://sourceforge.net/projects/acl/
        github:https://github.com/acl-dev/acl
        国内镜像:http://git.oschina.net/acl-dev/acl
      
        ACL QQ 群:242722074
        微博:http://weibo.com/zsxxsz/

 

 

 

0
0
分享到:
评论

相关推荐

    Squid 权威指南

    《Squid 权威指南》是一本深入探讨Squid缓存代理服务器的书籍,旨在帮助读者理解和掌握Squid的安装、配置以及在实际生产环境中的应用。Squid是一个广泛使用的开源HTTP代理/缓存服务器,它能够显著提高网络访问速度,...

    squid 管理员指南

    2. **负载均衡**:利用Squid的负载均衡功能,可以将请求分发到多个后端服务器。 3. **内容过滤**:通过`url_rewrite`和`access_list`等规则,实现对特定类型内容的过滤。 4. **HTTPS代理**:Squid支持透明代理和非...

    PyPI 官网下载 | azure-storage-queue-1.4.0.tar.gz

    例如,你可以创建一个队列来存储待处理的任务,然后在后台有空闲资源时处理这些任务,这样可以实现负载均衡,避免服务过载。 总之,`azure-storage-queue`是一个针对Azure云平台的Python客户端库,主要用于处理队列...

    Novell eDirectory管理指南

    通过冗余服务器和动态负载均衡,eDirectory 能够确保即使在部分硬件故障的情况下也能保持服务的连续性。此外,其自动恢复功能可以在服务器出现问题时快速恢复正常运行状态。 ##### 3. 统一资源管理 eDirectory 支持...

    H3C SR8800 核心路由器 操作手册

    7. **高级特性**:讨论如MPLS、VPLS、VXLAN等高级网络技术的配置,以及如何实现负载均衡和高可用性。 8. **热备与冗余**:详述HSRP、VRRP等热备技术,以及SR8800系列特有的冗余机制,确保网络服务的连续性和可靠性...

    EN_Host Your Web Site in the Cloud.pdf

    本书《云端托管网站:亚马逊网络服务轻松上手》(*Host Your Web Site in the Cloud: Amazon Web Services Made Easy*)由杰夫·巴尔(Jeff Barr)编写,于2010年9月首次出版。本书详细介绍了如何利用亚马逊网络服务...

    mysql中文手册

    13. **复制和集群**:MySQL的主从复制技术,以及如何构建高可用性和负载均衡的集群。 14. **日志系统**:错误日志、查询日志、二进制日志和慢查询日志的使用和配置。 15. **高级主题**:分区、窗口函数、游标、...

    UNIXUsHb_Unix_Linux_linux_UNIX_

    16. **分布式系统**:理解集群、分布式文件系统(如NFS、GlusterFS)以及负载均衡。 17. **虚拟化技术**:KVM、Xen、Docker等虚拟化技术在Unix/Linux上的应用。 18. **云服务与容器**:了解AWS、Azure、Google ...

    VC编程-UNIX与Windows移植.doc

    在多处理器系统上,UNIX和Windows的线程调度和负载均衡策略有各自的特点,移植时要考虑这些差异。 **守护进程和服务** 在UNIX中,守护进程是后台运行的长期服务,而在Windows中,对应的是服务。创建和管理服务需要...

    H3C ER系列企业级路由器 用户手册-5W104-整本手册

    【H3C ER系列企业级路由器用户手册】是H3C公司为帮助企业用户更好地理解和操作其ER系列路由器而编写的详尽指南。手册涵盖了从基本配置到高级功能的全面知识,旨在提供一个全面、易懂的技术参考,确保用户能够充分...

    CCNP BCMSN Student Guide Version 3.0 Vol.2(2006).

    - **网络优化策略**:分享网络优化的最佳实践,包括负载均衡、冗余路径选择等。 #### 四、实操技能 除了理论知识外,《CCNP BCMSN Student Guide Version 3.0 Vol.2》还强调了实际操作技能的培养。书中包含了大量...

    dasein-cloud-examples

    - **负载均衡和弹性IP**:配置负载均衡器,分配弹性IP,实现高可用性。 - **计费和监控**:获取账单信息,设置成本预算,以及监控资源的性能指标。 - **镜像和模板**:管理自定义镜像,创建和分享镜像模板。 - **...

Global site tag (gtag.js) - Google Analytics