All Category

공개범위 설정
Table
   
기본채널
Table
   
카테고리
Table
   
공개범위
[전체]전체 공개
Table
   
위치정보
[전체]나만 보기
Table
   
다운로드
[전체]로그인 공개
Table
   
슬라이드
Table
   
시작고정
Table
   
사진정보
0
Date: 2021-03-25
2021
March
25

[3]. WEB/WAS Server 구성 - 3. Apache와 Jboss의 부하분산(Load Balancing) 및 세션공유(Session Clustering)





[3]. WEB/WAS Server 구성 - 3. Apache와 Jboss의 부하분산(Load Balancing) 및 세션공유(Session Clustering)




  • 고가용성(HA : High Availability)

  - 부하분산된 서버중에 장애가 발생할 경우 다른 서버가 그 역할을 대신(Failover)할 수 있도록 하는 것입니다. 

  - 서비스의 다운타임을 줄이거나(없게)해줌으로서 서비스를 중단 없이 항상 사용 가능한 상태를 유지해서 가용성을 높여줍니다.

  - 또는 서버 업그레이드나 어플리케이션 배포시 다른서버에서 작업을 대신 처리하게 하므로서 무중단 서비스를 가능게 합니다. 

   

  • 부하분산(Load Balancing)  

  - 서버들간에 부하를 균등하게 분산해서 서비스 하는것입니다. 서비스 총 처리량은 각 클러스터를 구성하는 서버들의 성능을 합한 것과 같습니다.

  - 만약에 동시접속자 1만명을 수용할 수 있는 서버라면, 3대의 서버로 클러스터링 하게 되면 동시접속자 3만명을 수용하게 되고, 처리량을 늘리려면 서버를 추가 증설하면 됩니다.

  - 서버 1대의 성능 증가는 한게가 있기때문에 무한대로 성능을 높일수가 없습니다. 이럴때 여러대의 서버를 클러스터링으로 묶어(병렬) 부하를 분산하면 손쉽게 성능 증가가 가능합니다. 

   

  • 세션공유(Session Clustering)

  - 부하분산된 클러서터링 서버들간에 세션을 공유하게 해서, Client 관점에서는 마치 한대의 서버에서 처리되는 듯한 효과를 볼 수 있도록 구축하는 방식 입니다.

  - 무중단 서비스를 가능게 할 수 있습니다.

  - 클러스터된 서버가 동시에 모두 중단되지 않는한 동일한 세션을 유지 할 수 있습니다.

  

  

 





1. Apache/Jboss 디랙토리 구조









2. jboss의 3가지 운영 방식

  • standalone mode(각각 설정해줘야함)

  - 단일 인스턴스로 실행된다.

  - 인스턴스 별 개별관리가 필요하며 각 인스턴스별 프로파일 설정을 해줘야 한다.

  - 설정이 간단하고 직관적이라서 관리가 쉽다


  • domain mode(설정 복잡도가 높음)

  - 프로파일 설정은 도메인 컨트롤러에 포함된다.

  - 다수의 인스턴스가 그룹으로 구성되어 있다.

  - 인스턴스 별 그룹 지정이 가능하며 그룹별 설정이 가능하다.


  • Node 분할 mode (standalone를 복사해서 2개 이상의 Node 생성)

  - 단일 인스턴스로 실행된다.

  - 인스턴스 별 개별관리가 필요하며 각 인스턴스별 프로파일 설정을 해줘야 한다.

- 설정이 간단하고 직관적이라서 관리가 쉽다








3. Apache와 Jboss의 부하분산 및 세션공유 설정하기

 

 - Apache와 Jboss의 부하분산 및 세센공유 구성 전체 플로우





- Apache의 부하분산 및 세센공유 구성 설정1(mod_jk, mod_cluster)

[세부 설정 참고]

(2). Apache의 부하분산 및 세션공유 설정 상세(mod_jk + mod_cluster)











- Jboss의 부하분산 및 세센공유 구성 설정2(env.sh, standalone-full-ha.xml)

[세부 설정 참고]

(3). Jboss의 부하분산 및 세션공유 설정 상세(mod_jk + mod_cluster)













4. Apache와 Jboss의 부하분산 및 세션공유 - 소캣바인딩

이름

포트+Offset

포트

멀티케스트 포트

full-ha

full

ha

standard

설명

ajp

8009 + Offset

8009


Yes

Yes

Yes

Yes

Apache JServ 프로토콜, HTTP클러스터링 및 부하분산에 사용

http

8080 + Offset

8080


Yes

Yes

Yes

Yes

배표된 웹 어플리케이션 기본 포트

https


8443


Yes

Yes

Yes

Yes

배포된 웹 어플리케이션과 클라이언트 사이의 SSL 암호화 연결

jacorb


3528


Yes

Yes

No

No

JTS 트랜잭션 및 다른 ORB 서비스의 CORBA 서비스

jacorb-ssl


3529


Yes

Yes

No

No

SSL 암호화 CORBA 서비스

jgroups-diagnostics



7500

Yes

No

Yes

No

멀티 캐스트 HA클러스터의 멤버를 검색하는데 사용

jgroups-mping



45700

Yes

No

Yes

No

멀티캐스트 HA 클러스터의 멤버를 검색하는데 사용

jgroups-tcp


7600


Yes

No

Yes

No

TCP를 사용하여 HA 클러스터에서 유니 캐스트 피어 검색

jgroups-tcp-fd


57600


Yes

No

Yes

No

TCP를 통한 HA 오류 감지에 사용

jgroups-udp


55200

45688

Yes

No

Yes

No

UDP를 사용하여 HA 클러스터에서 유니 캐스트 피어 검색

jgroups-udp-fd


54200


Yes

No

Yes

No

UDP를 통한 HA 오류 감지에 사용

messaging


5445


Yes

Yes

No

No

JMS 서비스

messaging-group




Yes

Yes

No

No

HornetQ JMS 브로드 캐스트 감지 그룹에 의해 참조

messaging-throughput


5455


Yes

Yes

No

No

JMS Remoting에 의해 사용

mod_cluster



23364

Yes

No

Yes

No

Jboss EAP와 HTTP 로드 밸런서 사이의 통신에 대한 멀티 케스트 포트

osgi-http


8090


Yes

Yes

Yes

Yes

OSGI 서브시스템을 사용한느 내부 컴포넌트에 의해 사용

remoting


4447


Yes

Yes

Yes

Yes

원격 EJB 호출에 사용

txn-recovery-environment


4712


Yes

Yes

Yes

Yes

JTA 트랜잭션 리커버리 메니저

txn-status-manager


4713


Yes

Yes

Yes

Yes

JTA/JTS 트랜잭션 매니저

Management Web Console

9990 + Offset

9990






http://jboss-ip:9990/console

CLI management

9999 + Offset

9999






[root@localhost SERVER11] ./jboss-cli.sh



- 방화벽 구성(열기)

[root@localhost sysconfig]# cd /etc/sysconfig/
[root@localhost sysconfig]# vi iptables



- 방화벽 구성(편집)

# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT

 
#[필수]------------------------------------------------------ -------------------------------           ---------
-A INPUT -d 224.0.1.0/24    -p udp -m comment --comment "mod_cluster traffic"                            -j ACCEPT
-A INPUT -d 224.0.0.0/4     -p udp -m comment --comment "JBoss Cluster traffic"                          -j ACCEPT
-A INPUT -s 192.168.10.0/24 -p udp -m comment --comment "cluster subnet for inter-node communication"    -j ACCEPT
-A INPUT -s 192.168.10.0/24 -p tcp -m comment --comment "cluster subnet for inter-node communication"    -j ACCEPT
#[필수]------------------------------------------------------ -------------------------------           ---------
  
#[필수]--------------------------------------------------------------------------- -------------------------------         ---------
-A INPUT -s 230.0.0.4/32   -p udp -m udp --dport 45688 -m comment --comment "jgroups-udp (multicast-port:4-j ACCEPT 5688)"  -j ACCEPT
-A INPUT -s 230.0.0.4/32   -p udp -m udp --dport 45700 -m comment --comment "jgroups-mping(multicast-port:4-j ACCEPT 5700)" -j ACCEPT
-A INPUT -s 231.7.7.7/32   -p udp -m udp --dport 9876  -m comment --comment "hornetq   (multicast-port:9-j ACCEPT 876)"     -j ACCEPT
-A INPUT -s 224.0.1.105/32 -p udp -m udp --dport 23364 -m comment --comment "224.0.1.105 (multicast-port(2-j ACCEPT 3364)"  -j ACCEPT
#[필수]--------------------------------------------------------------------------- -------------------------------         ---------

-A INPUT -m iprange --src-range 192.168.20.1-192.168.20.2 -p tcp -m tcp --dport 3528 -j ACCEPT
-A INPUT -m iprange --src-range 192.168.20.1-192.168.20.2 -p tcp -m tcp --dport 3529 -j ACCEPT
-A INPUT -m iprange --src-range 192.168.20.1-192.168.20.2 -p tcp -m tcp --dport 7600 -j ACCEPT
-A INPUT -m iprange --src-range 192.168.20.1-192.168.20.2 -p tcp -m tcp --dport 54200 -j ACCEPT
-A INPUT -m iprange --src-range 192.168.20.1-192.168.20.2 -p tcp -m tcp --dport 57600 -j ACCEPT
                             
 
 
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT



- 방화벽 구성(네트웍크 재시작)

[root@localhost sysconfig]# /etc/rc.d/init.d/iptables restart














5. Apache와 Jboss의 부하분산 및 세션공유 예시(mod_jk) 









6. Apache와 Jboss의 부하분산 및 세션공유 예시(L4스위치 + mod_jk + mod_cluster) - 노드 분리

- 같은 Web Server와 연결된 WAS의 Node ID는 중복이 없어야 한다.(Session Clustering)









7. Apache와 Jboss의 부하분산 및 세션공유 예시(L4스위치 + mod_jk + mod_cluster) - standalone









8. Apache와 Jboss의 부하분산 및 세션공유 예시(mod_jk + mod_cluster) - 싱글서버

- 싱글 서버일때도 WAS를 Node1, Node2로 분리하게 되면 무중단 서비스가 가능해지기 때문에 불필요한 다운타임을 줄일수가 있다(소스 배포시/설정 변경시)

- 2개의 노드구성으로 노드가 동시에 중단 되지 않는다면 서비스 다운타임을 줄일수 있음(소스 배포시 WAS가 리로드 되기때문에 세션이 끊겨버림 -> 소스를 순차적 배포를 해서 세션 유지)












9. Apache와 Jboss의 부하분산 및 세션공유 예시(mod_jk + mod_cluster) - 부하분산(Load Balancing)/세션공유(Session Clustering)

  • 부하분산(Load Balancing)  : WAS1, WAS2로 부하를 분산해서 두배의 성능을 기대

 - 서버들간에 부하를 균등하게 분산해서 서비스 하는것입니다. 서비스 총 처리량은 각 클러스터를 구성하는 서버들의 성능을 합한 것과 같습니다.

 - 만약에 동시접속자 1만명을 수용할 수 있는 서버라면, 3대의 서버로 클러스터링 하게 되면 동시접속자 3만명을 수용하게 되고, 처리량을 늘리려면 서버를 추가 증설하면 됩니다.

 - 서버 1대의 성능 증가는 한게가 있기때문에 무한대로 성능을 높일수가 없습니다. 이럴때 여러대의 서버를 크러스터링으로 묶어(병렬) 부하를 분산하면 손쉽게 성능 증가가 가능합니다. 


※ 서버 2대로 부하 분산해서 약 2배의 성능 향상




  • 세션공유(Session Clustering) : 4개의 노드(S01-Node01, S01-Node02, S02-Node01, S02-Node02) 구성으로 다운타임을 줄일수 있음

 - 부하분산된 클러서터링 서버들간에 세션을 공유하게 해서, Client 관점에서는 마치 한대의 서버에서 처리되는 듯한 효과를 볼 수 있도록 구축하는 방식 입니다.

 - 무중단 서비스를 가능게 할 수 있습니다.

 - 클러스터된 서버가 동시에 모두 중단되지 않는한 동일한 세션을 유지 할 수 있습니다.  


※ 4개의 노드구성으로 노드가 동시에 중단 되지 않는다면 서비스 다운타임을 줄일수 있음(소스 배포시 WAS가 리로드 되기때문에 세션이 끊겨버림 -> 소스를 순차적 배포를 해서 세션 유지)











[세부 설정 참고]

(1). mod_jk + mod_cluster 설치

(2). Apache의 부하분산 및 세션공유 설정 상세(mod_jk + mod_cluster)

(3). Jboss의 부하분산 및 세션공유 설정 상세(mod_jk + mod_cluster)

(4). 부하분산(Load Balancing)및 세션공유(Session Clustering)에서 배포하기(Deployments)





URL : http://www.epari.net/@architecture/vlink/b/b6
목록
도움이 되는 유익한 내용이었다면 힘이 될 수 있는 댓 글을 남겨주세요.
4
0
  • 뎃글달기
Upload
v
Name Type Size