LoadBalancer 可以将来自客户端的请求分发到不同的服务器,通过将一系列的请求转发到不同的服务器可以提高服务器的性能,并可以自动地寻找最优的服务器转发请求,这样不仅提高了系统性能,同时达到了负载均衡的目的,满足了用户需求,因此 LoadBalancer 在应用场景中一般处于 web 服务器的前端,用来均衡发到 web 服务器的请求量,均衡负载,提高系统性能。LoadBalancer 可以连接多个 web server,从而将多个 web server 组成一个集群(cluster),集群中负载的分配通过 loadBalancer 进行控制和管理。当然为了更好地进行负载均衡,LoadBalancer 也可以构建为一个集群,使用 LoadBalancer 构建的 web server cluster

2. How to configure loadbalancer ?

WebSphere Edge Load Balancer 在 Linux 环境下的安装

我们需要在 Linux 环境下安装 LoadBalancer,Linux 的系统环境为 64bit 的 Redhat6.2,将要安装的 LoadBalancer 版本为 V8.0.0.6。因为 LoadBalancer V8.0 只有在升级到 V8.0.0.6 之后才可以正常使用,所以我们除了要安装 LoadBalancer8.0 之外,还要将其升级为 V8.0.0.6。有图形界面和命令行两种安装方式。

在安装 LoadBalancer 之前,首先要安装 IBM Installation Manager。目前可以在 Linux 64bit 环境下正常运行的 IM 最低版本为 1.6,建议使用。因为在命令行界面使用 IM 安装和在图形界面使用 IM 安装步骤基本一致,为了简便起见,下面只介绍 LoadBalancer 在图像界面下的安装。

LoadBalancer 的图形界面安装

  1. 启动 IM1.6。
  2. 在 IM1.6 中添加 LoadBalancer V8.0 的 repository。
  3. 测试是否正确连接。
  4. 点击 IM 界面上的 Install 按钮启动安装界面。
  5. 按照步骤进行相应的选择,执行安装,直到安装成功。
  6. 在 IM1.6 中添加 fixpack6 的 repository。
  7. 测试连接成功后,在 IM 安装界面选择 Update 按钮更新现有的 LoadBalancer V8.0。
  8. 按照步骤提示进行相应选择,直到更新成功

使用 WebSphere Edge Load Balancer 构建 IBM Http Server Cluster

如图 1 所示,可以使用 LoadBalancer 将多个 web Server 构建为一个 Cluster,同时 LoadBalancer 也可以构成一个 Cluster,这里我们以使用一个 LoadBalancer 将两台 HTTP Server 构成一个集群为例介绍在 Linux 环境下如何使用 WebSphere Edge Load Balancer 构建 IBM Http Server Cluster。

前期准备

  1. 为了构建 HTTP Server Cluster,首先需要有两台装有 HTTP Server 的 VM. 同时需要有一台装有 LoadBalancer 的 VM。因为这三台机器要互相交互,所以要保证它们之间可以互相 ping 通并且在同一个网段内。因此需要在每一台机器的 hosts 文件中添加进去另外两台机器的 ip 和 hostname,以便这三台机器之间进行交互。
  2. 需要一个同一网段内的另一个没有被任何 VM 占用的 IP 作为 Cluster 的 IP。为了确保所使用的 IP 没有被任何 VM 占用,可以在 Windows 的终端内输入 nslookup IP 命令进行查询,如果显示如法查找到该 IP,表示该 IP 是可以作为 Cluster 的 IP 被使用的。
  3. 需要将 Cluster IP 作为一个虚拟网络 IP 配置到 HTTP Server 的虚拟网卡上。需要在终端执行以下命令:

    # ifconfig lo:1 Cluster IP netmask 255.255.255.255 up

    在两台 HTTP Server 上都需要执行上述配置命令,这样配置好的 Cluster 才可以通过 Cluster IP 将服务器请求分发到两台 HTTP Server 上完成负载均衡。

  4. 需要启动 HTTP Server。在装有 HTTP Server 的 VM 上,进入到 HTTP Server 的安装目录,进入 bin 目录,运行 # ./apachect1 命令启动 HTTP Server。

使用 LoadBalancer 配置 HTTP Server Cluster

  1. 执行命令 dsserver 启动服务。注意执行完该命令后不会出现任何提示,但是从 server.log 里可以看到系统启动信息。Log 文件位于 LoadBalancer 安装目录下的 servers/logs/dispatcher 子目录下面。启动后 log 文件内容如图 2 所示。不要重复执行 dsserver 命令,第二次执行时候会提示:Error: can not create registry on port 10,099. 此时不能认为是出现错误,因为再次看 log 就会发现是因为 Server 已经启动缘故。如图 3 所示
图 2. dsserver 启动后 log 文件内容

图 3. 重复启动 dsserver 后 log 文件内容

执行 lbadmin 命令启动 LoadBalancer 的配置界面,如图 4 所示。

图 4. LoadBalancer 配置界面

  1. 添加本机为 LoadBalancer 的 Host,右击 Dispatcher,选择 Connect to Host …,这时就会将本机添加为 Host 主机。
  2. 右击 Host,选择 start Executor, 这样可以启动执行器。
  3. 启动执行器之后,右击执行器 Executor 选择 Add Cluster 选项开始构建 cluster。
  4. 在弹出的窗口中输入 Cluster  name , Cluster IP 和 LoadBalancer 的 Host IP 保存并退出。
  5. 右击在第 6 步中新建的 Cluster, 选择 Add port 为 HTTP Cluster 添加端口号。通过 Cluster IP 和该端口号可以将来自服务器对该端口的应用请求分别分发到不同的 HTTP Server 上。在该节中我们构建的是 HTTP Cluster,所以将该端口号填为 80,即 HTTP 的默认端口。
  6. 右击 Port 并选择 Add Server,分别将两个 HTTP Server 添加到该 Cluster 中。
  7. 右击 Host 选择 Start Manager 可以启动 Cluster。

IBM HTTP Server 的配置

为了达到能够通过 Cluster IP 来分发负载的功能,在每个 HTTP Server 上都需要进行相应的配置。配置完成后该 HTTP Server 不仅能够侦听来自本 IP 80 端口的请求,也可以侦听来自 Cluster IP 80 端口的请求。

在安装有 HTTP Server 的机器上,进入 HTTP Server 的安装目录,默认为 /opt/IBM/HTTPServer/,进入配置文件子目录 conf,编辑配置文件 Httpd.conf 将 Listen 端口处编辑为 Listen HTTPServer IP:80 和 Listen Cluster IP:80. 如图 5 所示。

图 5. 配置 HTTP Server 时侦听 80 端口

重新启动 HTTP Server,至此使用 LoadBalancer 构建 HTTP Server Cluster 的步骤已经完成,这也是为下一节使用 LoadBalancer 构建 Security IBM HTTP Cluster 做的准备和铺垫,所以在下节构建好 Security IBM HTTP Server Cluster 后将一并描述如何测试构建起来的 Cluster 是否成功。

使用 WebSphere Edge Load Balancer 构建 Security IBM Http Server Cluster

在上一节构建起来的 Http Server Cluster 的基础上,我们进一步来构建 Security IBM HTTP Server Cluster。

前期准备工作由于上节已经做过,在该节可以忽略。接着我们使用 LoadBalance 配置 Security HTTP Server Cluster,前 6 步与上节相同,在第 7 步添加端口时,要添加 Security 端口,默认值为 443。之后在该端口下添加 HTTP Server,添加完成后启动 Manager。配置 HTTP Server Cluster 与配置 Security HTTP Server Cluster 的主要区别在于对 HTTP Server 的配置。

由于我们所要配置的是 Security HTTP Cluster,因此必须保证每个 HTTP Server 节点都可以通过 https 访问主机。所以首先要在 HTTP Server 的机器上生成进行安全访问是使用的 key 文件。

HTTP Server 的配置

  1. 进入 HTTP Server 的安装目录,进入 bin 子目录下,执行如下命令可以生成名为 ihsserverkd 的 key 文件。

    # ./gsk7cmd -keydb -create -db ihsserverkdb -pw passw0rd  -stash

    执行完命令后,在 bin 目录下将会生成 ihsserverkdb.kdb 和 ihsserverkdb.rdb 文件,如图 6 所示。上述命令中,ihsserverkdb 为 key 文件的名字,passw0rd 为 keydb 的密码,当然可以根据个人的喜好进行改变。

图 6. 产生 key 文件

编辑 HTTP Server 配置文件,开启对安全端口 443 的侦听。进入 HTTP Server 的安装目录,默认为 /opt/IBM/HTTPServer/, 进入配置文件子目录 conf,编辑配置文件 Httpd.conf,在 Listen 端口处添加 Listen HTTPServer IP:443 和 Listen Cluster IP:443 如图 7 所示。

图 7. 配置 HTTP Server 时侦听 443 端口

编辑 HTTP Server 配置文件,添加 443 虚拟端口。进入 conf 配置子目录,编辑 Httpd.conf 文件,在该文件最后添加代码为 HTTP Server 的本机 IP 和 Cluster IP 都开启 443 虚拟端口,否则会导致访问不成功。添加后如图 8 所示。

图 8. 添加 443 虚拟端口

编辑 HTTP Server 配置文件,添加 ssl key 文件。

编辑 Httpd.conf 文件,在该文件最后添加如下代码来指定访问时所要使用的 ssl key 文件。

KeyFile "/opt/IBM/HTTPServer/bin/ihsserverkdb.kdb"

添加后如图 9 所示。

图 9. 在 httpd.conf 文件中添加 key 文件

  1. 保存 httpd.conf 文件并退出。
  2. 重新启动 HTTP Server。
  3. 在另一台 HTTP Server 上也执行与步骤 1-6 同样的操作。

至此使用 LoadBalancer 构建 Security HTTP Server Cluster 的步骤已经完成,下面测试下构建起来的 Security HTTP Server Cluster 是否能够正常工作。

测试 Security IBM HTTP Server Cluster

可以通过以下四个方面测试 Security IBM HTTP Cluster 的构建是否成功。

  1. 通过 LoadBalancer 的配置页面查看 Security HTTP Server Cluster,单击 Refresh Statistics 按钮,观察 HTTP Server 的负载信息是否会发生变化,如图 10 所示。如果负载信息会发生变化说明 Security IBM HTTP Server Cluster 构建成功。

    图 10. Security HTTP Server Cluster 配置完成后的 LoadBalancer 页面

查看管理信息输出,在终端输入如下命令,可以看到构建好的 Cluster 的详细信息,如图 11 所示。从图上可以看到 HTTP Server 的详细信息和状态。

dscontrol manager rep

图 11. LoadBalancer 的管理信息图

查看 advisor report 的输出,在终端输入如下命令查看端口 443 的信息,如图 12 所示。

Dscontrol advisor report https 443

图 12. Security HTTP Server Cluster 信息

  1. 在浏览器中输入 https://ClusterIP:443,IHS 的欢迎页如果可以出现就说明 Security HTTP Server Cluster 配置成功。
 
 
 
 

Loadbalancer的更多相关文章

  1. HighAvailability和LoadBalancer

    HighAvailability                         LoadBalancer 红帽RHCS                                lvs(三种工作 ...

  2. 转载NodePort,LoadBalancer还是Ingress?我该如何选择 - kubernetes

    原文:http://mp.weixin.qq.com/s/dHaiX3H421jBhnzgCCsktg ClusterIP ClusterIP服务是Kuberntets的默认服务.它在集群内部生成一个 ...

  3. NodePort,LoadBalancer还是Ingress?我该如何选择 - kubernetes

    原文:http://mp.weixin.qq.com/s/dHaiX3H421jBhnzgCCsktg 当我们使用k8s集群部署好应用的Service时,默认的Service类型是ClusterIP, ...

  4. Kubernetes的三种外部访问方式:NodePort、LoadBalancer和Ingress(转发)

    原文 http://cloud.51cto.com/art/201804/570386.htm Kubernetes的三种外部访问方式:NodePort.LoadBalancer和Ingress 最近 ...

  5. Kubernetes的三种外部访问方式:NodePort、LoadBalancer和Ingress

    NodePort,LoadBalancer和Ingress之间的区别.它们都是将集群外部流量导入到集群内的方式,只是实现方式不同. ClusterIP ClusterIP服务是Kubernetes的默 ...

  6. Use a load-balancer as a first row of defense against DDOS

    We’ve seen recently more and more DOS and DDOS attacks. Some of them were very big, requiring thousa ...

  7. service几种访问类型(集群外负载均衡访问LoadBalancer , 集群内访问ClusterIP,VPC内网负载均衡LoadBalancer ,集群外访问NodePort)

    一.集群外访问(负载均衡) kind: ServiceapiVersion: v1spec: ports: - protocol: TCP port: 4341 targetPort: 8080 no ...

  8. SpringCloud使用Feign出现java.lang.ClassNotFoundException: org.springframework.cloud.client.loadbalancer.LoadBalancedRetryFactory异常

    废话不多说!!! 在SpringCloud项目中配置了Feign来调用restful接口,项目启动的时候报错,报错信息如下: 找不到org.springframework.cloud.client.l ...

  9. 【Kubernetes】Kubernetes的Service外部访问方式:NodePort和LoadBalancer

    Kubernetes的Pod的寿命是有限的,它们不会复活,因此尽管每个Pod都有自己的IP地址,但是这些IP地址是不可靠的,会随着Pod的消亡而消失. 这就带来一个问题,如果一些Pod的集合(称之为b ...

随机推荐

  1. 路由跟踪表满,日志报错nf_conntrack: table full, dropping packet.

    “连接跟踪表已满,开始丢包”!相信不少用iptables的同学都会见过这个错误信息吧,这个问题曾经也困扰过我好长一段时间.此问题的解决办法有四种(nf_conntrack 在CentOS 5 / ke ...

  2. spring、springMVC、mybatis配置文件

    一.jdbc.properties 文件: driver=com.mysql.jdbc.Driverurl=jdbc:mysql://192.168.31.xxx:3306/abc?useUnicod ...

  3. 【进阶4-2期】Object.assign 原理及其实现 (转)

    这是我在公众号(高级前端进阶)看到的文章,现在做笔记  https://github.com/yygmind/blog/issues/26 浅拷贝 Object.assign 上篇文章介绍了其定义和使 ...

  4. js基础学习

  5. 公历和农历转换的JS代码(车)

    <!-- function CalConv(M) { FIRSTYEAR = 1936; LASTYEAR = 2031; LunarCal = [ new tagLunarCal(23, 3, ...

  6. ios 本地存储文件夹的使用注意

    文件夹 tmp 属于临时文件夹,不需要自己删除,系统会在应用退出后清空   文件夹 Library 下面的子文件 Caches 也是用来存储的,,但是Library 基本上不会被清除,但是在内存不足的 ...

  7. hexo d 部署博客时出错

    问题描述: // 第一次遇到的问题 Error: packet_write_wait: Connection to 192.30.253.113 port 22: Broken pipe packet ...

  8. Redis事务概念

    redis事务与监控 Author:SimpleWu GitHub-redis 在redis中它的事务与批处理非常相似 Redis中的事务(transaction)是一组命令的集合.事务同命令一样都是 ...

  9. JSP 隐式对象

    一. 隐式对象 JSP隐式对象 对象 类型 request javax.servlet.http.HttpServletRequest response javax.servlet.http.Http ...

  10. 纯CSS3超酷3D旋转立方体动画特效

    简要教程 这是一款神奇的纯 CSS3 立方体动画特效插件.使用CSS3来制作动画效果已经成为WEB前端开发的一种时尚,从简单的颜色和尺寸动画,到复杂的旋转.翻转动画, CSS3 展现了它无穷的魅力.使 ...