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. const成员函数和mutable关键字

    一.const成员函数 class MyClass { public: void fun() const { } private: int m_nValue; } const成员函数内不能修改成员变量 ...

  2. mariadb:SQL日常使用总结

    1.关联删除 DELETE T_Base_Resource_Action FROM T_Base_Resource_Action  INNER JOIN T_Base_Resource ON T_Ba ...

  3. Day7--------------IP地址配置

    ifconfig 查看网卡 ifconfig eth0 查看网卡eth0 配置网络地址: 临时配置: ifconfig eth0 192.168.10.100 netmask 255.255.255. ...

  4. 自定义redis连接池(字典操作)

    pool=redis.ConnectionPool(host='127.0.0.1', port=6379,max_connections=1000)conn=redis.Redis(connecti ...

  5. JS调用摄像头并上传图片到服务器

    本功能只能把图片转成base64码上传,如何上传图片还没有修改出来,有兴趣的朋友弄出来了,请给我留下言,谢谢了! 直接上代码,需要的朋友直接复制就可以使用了. <!DOCTYPE html> ...

  6. Protobuf3 语法指南

    目录 [−] 定义一个消息类型 指定字段类型 分配标识号 指定字段规则 添加更多消息类型 添加注释 保留标识符(Reserved) 从.proto文件生成了什么? 标量数值类型 默认值 枚举 使用其他 ...

  7. ES5与ES6的研究

    今天开始ES5与ES6的研究. 1.什么是ES5与ES6? 就是ECMAScript的第五个版本与第六个版本,那么问题来了,什么是ECMAScript?首先它是一种由Ecma国际通过ECMA-262标 ...

  8. 二进制补码除法——计算机底层整数除法模拟之Java实现

    前面讲到布思算法的计算机底层模拟的时候,我们是借助于一个可以储存.表示任意N位的二进制补码的BinaryQueue实现的,现在我们模拟计算机底层整数除法还是要借助于它: BinaryQueue类代码: ...

  9. django 中session的存储和获取

  10. c++ 链表基础功能实现

    #include<stack> struct ListNode { int m_nValue; ListNode* m_pNext; }; ListNode* CreateListNode ...