간단하다.
keepalived 설치 및 설정 후 haproxy를 설치하고 설정을 마치면 된다.
위 그림과 같은 구조를 만들었을 경우 master 노드로 설정된 호스트가 가상 IP를 가지고 있다가
마스터노드의 keepalived가 다운되거나, 호스트 자체가 다운되는 경우 자연스레 백업 노드로 연결이 넘어가게된다.
알아도 삶에 도움 1도 안되는 얕고 잡스러운 지식, 그리고 쓸데 없는 이야기.
간단하다.
keepalived 설치 및 설정 후 haproxy를 설치하고 설정을 마치면 된다.
위 그림과 같은 구조를 만들었을 경우 master 노드로 설정된 호스트가 가상 IP를 가지고 있다가
마스터노드의 keepalived가 다운되거나, 호스트 자체가 다운되는 경우 자연스레 백업 노드로 연결이 넘어가게된다.
HAProxy는 여러 서버에 대해 요청을 확산시키는 TCP 및 HTTP 기반 애플리케이션들을 위해 고가용성 로드밸런서와 리버스 프록시를 제공하는 자유-오픈 소스 소프트웨어이다. C 프로그래밍 언어로 개발되어 있으며 빠르고 효율적인 것으로 유명하다.
공식 사이트 참조
haproxy를 통해 부하를 분산하는 등의 용도로 서비스 효율을 높일 수 있다.
여기에서 다운 받아도 되며, yum epel-release에 포함되어 있으므로 epel-release 리포지터리 추가 후 yum 이나 dnf 명령 등을 통해 설치할 수 있다.
sudo dnf install -y haproxy 마지막 메타자료 만료확인 7:58:42 이전인: 2022년 07월 28일 (목) 오전 12시 23분 23 초. 종속성이 해결되었습니다. ================================================================================ 꾸러미 구조 버전 레포지터리 크기 ================================================================================ 설치 중: haproxy x86_64 1.8.27-4.el8 appstream 1.4 M 연결 요약 ================================================================================ 설치 1 꾸러미 총계 내려받기 크기: 1.4 M 설치된 크기 : 4.2 M ...중략... 설치되었습니다: haproxy-1.8.27-4.el8.x86_64 완료되었습니다!
서비스가 구동 될 모든 서버에 설치해준다.
자동으로 서비스가 구동될 수있도록 서비스를 등록 해준다.
sudo systemctl enable haproxy.service 또는 sudo service haproxy start
기본적으로 /etc/haproxy/haproxy.cfg 가 존재한다.
global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon # turn on stats unix socket stats socket /var/lib/haproxy/stats #--------------------------------------------------------------------- # common defaults that all the 'listen' and 'backend' sections will # use if not designated in their block #--------------------------------------------------------------------- defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 #--------------------------------------------------------------------- # status web 설정 # haproxy 서비스 상태, 백엔드 서비스의 상태 등을 웹을 통해 확인할 수 있다. # 필수는 아니다. #--------------------------------------------------------------------- listen hastats mode http bind *:8088 stats enable stats show-legends stats uri /hastat # 서버 주소가 192.168.0.1이라면 http://192.168.0.1/hastat으로 접속한다. stats auth admin:admin # hastats 웹에 접속 시 인증으로 제한하려면 계정과 패스워드를 지정한다. #--------------------------------------------------------------------- # 프론트 엔드 설정 # 프론트 엔드에서 설정한 포트로 연결이 들어올 경우 백엔드로 보낸다 #--------------------------------------------------------------------- # 외부에서 haproxy를 통해 연결을 시도할 때 사용하는 포트 frontend kubeproxy bind *:16443 default_backend kubeproxy mode tcp #--------------------------------------------------------------------- # 백엔드 설정 # 프론트엔드에서 defaultbackend 타겟으로 설정 된 백엔드 정보 #--------------------------------------------------------------------- backend kubeproxy balance roundrobin # Balance Option # Roundrobin : 순차적으로 분배 # static-rr : 서버에 부여된 가중치에 따라서 분배 # leastconn : 접속수가 가장 적은 서버로 분배 # source : 운영중인 서버의 가중치를 나눠서 접속자 IP 해싱(hashing)해서 분배 # uri : 접속하는 URI를 해싱해서 운영중인 서버의 가중치를 나눠서 분배 (URI의 길이 또는 depth로 해싱) # url_param : HTTP GET 요청에 대해서 특정 패턴이 있는지 여부 확인 후 조건에 맞는 서버로 분배 (조건 없는 경우 round_robin으로 처리) # hdr : HTTP 헤더에서 hdr(<name>)으로 지정된 조건이 있는 경우에 대해서만 분배 (조건없는 경우 round robin 으로 처리) # rdp-cookie : TCP 요청에 대한 RDP 쿠키에 따른 분배 mode tcp option tcp-check option tcplog # 외부에서 16443 포트로 연결을 시도하면 아래의 서버에 순차적으로 연결해준다. server storage01 192.168.0.1:6443 check server storage02 192.168.0.2:6443 check server storage03 192.168.0.3:6443 check frontend web-console bind *:18080 default_backend web-console mode tcp backend web-console balance roundrobin mode tcp option tcp-check option tcplog server storage01 192.168.1.1:8080 check server storage02 192.168.1.2:8080 check server storage03 192.168.1.3:8080 check
백엔드로 동작할 모든 서버에 동일한 설정 파일을 넣어준다.
haproxy 웹 서비스를 통해 정보 확인이 가능한다.
keepalive 참조
keepalive는 Linux 시스템 혹은 Linux 기반 인프라에서의 로드밸런싱 및 고가용성을 위한 기능을 제공한다.
단순하게 설명하면, 두 개 이상의 Linux 시스템이 존재할 경우, virtual IP 를 생성하고 시스템의 상태에 따라 해당 virtual IP를 할당해주는 기능을 한다.
# CentOS (Redhat 계열) $ sudo isntall -y keepalived # Ubuntu (Devian 계열) $ sudo apt-get install -y keepalived
/etc/keepalived/keepalived.conf 를 환경에 맞도록 수정한다.
Master server
! Configuration File for keepalived Master global_defs { router_id rtr_0 # Master와 Backup 구분 } vrrp_instance VI_0 { # Master와 Backup과 구분 state MASTER # 또는 BACKUP interface eth0 # 노드에서 실제 사용할 인터페이스 지정 virtual_router_id 10 # Master와 Backup 모두 같은 값으로 설정. priority 200 # 우선순위, 값이 높은 쪽인 Master가 된다. advert_int 1 authentication { auth_type PASS # Master와 Backup 모두 같은 값으로 설정. auth_pass P@ssW0rd # Master와 Backup 모두 같은 값으로 설정. } virtual_ipaddress { 192.168.0.100 # Master와 Backup 동일하게 설정한 VIP } } # #으로 시작하는 내용은 모두 삭제한다.
Backuo(slave)
! Configuration File for keepalived global_defs { router_id rtr_1 } vrrp_instance VI_1 { state BACKUP # MASTER가 아니므로 수정 interface eth0 virtual_router_id 10 priority 100 # 낮은 우선순위를 위해 수정 advert_int 1 authentication { auth_type PASS auth_pass P@ssW0rd } virtual_ipaddress { 192.168.0.100 } }
각각의 서버에서 서비스를 구동한다.
sudo systemctl enable keepalived --now # BACKUP 서버들에서도 동일하게 서비스를 구동해준다.
ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 4e:be:1a:32:52:04 brd ff:ff:ff:ff:ff:ff inet 192.168.1.41/24 brd 192.168.1.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet 192.168.1.40/32 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::4cbe:1aff:fe32:5204/64 scope link valid_lft forever preferred_lft forever
192.168.1.40/32가 virtual IP. backup 노드로 설정된 서버에는 해당 ip가 보이지 않는다.
다른 시스템에서 가상아이피를 이용하여 ssh 접속, 혹은 ping 명령등을 수행해서 확인하면 된다.
그레이 카드 (Gray card) 란 빛 반사율 18%인 회색의 평면 개체를 말한다. 좁은 의미로는 반사율 18%의 10*13cm, 20*25cm의 두 개의 회색 카드로 구성된 Kodak 그레이 카드 / R-27을 의미한다.
원래의 기본 용도는 ‘정확한 측광(빛의 양 측정)’ 이다.
대다수의 카메라는 보통 측광을 위한 센서가 있고 이 센서가 감지하는 빛의 양에 따라 적절한 노출 값을 가이드한다.
사진의 예시는 중앙부 스팟 측광 으로 설정이 되어있다. 즉 중앙의 원에 해당하는 영역이1각 모드에 따른 측광 영역은 카메라 제조사 및 설정에 따라 달라질 수 있다. 얼마나 밝은가 를 계산하고 이에 따라 어느 정도로 조리개 값, 셔터 속도, 감도 등을 설정 해야 하는지 가이드를 해준다는 이야기이다. 2당연히 자동 모드로 찍을 경우는 측광 결과에 따라 자동으로 이 값들을 정해서 촬영을 하게 된다.
좋은 사진을 위해서는 정확한 측광이 매우 중요하다. 잘못된 측광으로 인해 여자친구의 얼굴이 새까맣게 찍힐 수도 있고, 하얗게 뜬 얼굴에 눈만 덩그러니 찍힐 수가 있으니까. 이런 문제를 줄이고 정확한 측광을 위해 필요한 것이 바로 ‘그레이 카드’ 이다.
여기서 왜 많고 많은 색 중에 회색이며, 0%부터 100%까지의 숫자 중 왜 18%인가를 이해할 필요가 있다. 카메라는 다양한 피사체를 촬영하고, 이 피사체들은 각기 다른 색상과 반사율을 가지고 있다. 여기서의 측광이란 광원에서 나온 빛이 피사체에 부딛히고 반사되어 나오는 빛을 측정하는 것인데, 같은 광원에서 반사율이 달라진다면? 그리고 검정색과 흰색의 경우는? 카메라가 인식하는 빛의 양은 당연히 달라질 수 밖에 없다.
카메라가 이 반사율과 색상의의 차이를 정확히 인식하고 측광을 하면 좋겠지만 안타깝게도 그렇지 못하다. 카메라는 센서가 인식하는 모든 대상을 흑백으로 보고 빛을 18% 반사한다고 가정하고 노출을 정하게 된다.
카메라가 인식하는 사물과 색상은 위 표와 같다고 보면 된다.
즉, 어떤 사물 어떤 색이건 대상을 흑백으로 변환한 다음 측광 영역에 해당하는 곳의 색이 중앙의 회색과 일치하지 않는다면 현재 인식한 색과 비교하여 노출의 정도를 표시해주게 되는 것이다.
예를 들면 카메라가 인식한 색이 좌측의 검정색이라면 노출이 부족하므로 현재 설정이 2스톱 부족하다고 표시해주고 우측의 흰색이라면 노출이 과하다고 인식하여 노출이 2스톱 높다고 표시하게 되는 것이다.
여기서 그레이 카드의 역할은 매우 쉽고 단순하다. 피사체에 따라 반사된 빛의 양은 천차만별이므로 정확한 측정을 위해 피사체 근처에 그레이카드를 두고 카메라가 그레이카드의 광량을 측정 했을 때 18%반사율의 회색과 일치하는 값을 찾게 하는 것이다.
위 원리를 이해 했다면 사용법은 매우 단순하다.
멀리 있는 피사체라면 불가능하겠지만 사람이나 정물을 촬영할 경우라면 다음의 절차를 따르면 된다.
사실 필름 한 컷 한 컷이 돈이고, 촬영 직후 바로 결과물을 확인할 수 없던 과거에나 쓰던 물건이긴 하다. 카메라 자체의 측광을 위한 센서나 알고리즘도 좋아졌고, 정확하게 노출을 측정해주는 노출계를 사용하는 것도 좋은 방법이다.
아니 이런 기술적인 부분을 차치하더라도 요즘은 대부분 디지털 카메라로써 촬영 후 즉시 결과물의 확인이 가능하니 노출이 맞지 않다 싶으면 바로 다시 촬영하면 된다. 현장에서 미처 추가 촬영을 하지 못했다면 포토샵 등의 다양한 소프트웨어의 힘을 빌어 얼마든지 사후에도 처리가 가능하다.
하지만 적어도 카메라의 측광이란 어떤 원리로 이루어지는지 이해하고, 상황에 따라 적절히 그레이 카드를 활용한다면 더 좋은 결과물을 얻을 수 있을 것이다.
마이크로소프트 파워포인트(Microsoft Power Point)를 사용하다 보면 자동으로 한글이 영어로 영어에서 한글로 바뀌는 경우를 볼 수 있다.
아주 아주 편리한 기능으로 ‘database’라는 단어를 입력하고 싶을 때 한글이 선택된 상태로 ‘ㅇㅁㅅ뮴ㄴㄷ’를 입력하면 자동으로 제대로 된 영문으로 고쳐주는 기능이다.
하지만 종종 내가 원하지 않는 경우에도 변환이 되는 경우가 있는데 이런 경우라면 [파일] – [옵션] – [언어교정] – [자동 고침 옵션(A)…] 메뉴에서 [한/영 자동 고침(K)] 항목을 비활성화 해주면 된다
사실 위 기능은 구글에 ‘파워포인트 한영전환’ 9자만 검색하면 어떻게 바꾸는지 엄청 많이 나오므로 굳이 이렇게 포스팅할 필요가 없지만…
분명히 [한/영 자동 고침(K)] 항목을 비활성화 했음에도 제 멋대로 변경되는 것을 확인할 수 있다. “spark”의 경우는 아무런 문제가 없는 영단어인데 제 멋대로 자꾸 ‘rk ‘만 ‘가’로 치환하는데다 “repository”의 경우는 ‘sitory’ㅇ를 ‘냐새교’로 있지도 않은 단어로 자꾸 치환 해대니 미쳐버릴 노릇.
사실 이 문제는 파워포인트의 한영 전환 기능이 아니라 윈도우즈에 설치된 한글 입력기가 개입 하는 것으로 비단 파워포인트 뿐 아니라 다른 모든 어플리케이션에서 제 멋대로 문자를 치환해버리는 경우이다. 그러니까 파워포인트 문서를 작성하다가 문자가 변경된다고 옵션을 백번 바꿔봐야 소용이 없고, 엑셀에서도 제 멋대로 문자를 치환하고, 크롬의 경우는 제 멋대로 주소표시줄에서 자동완성을 시전하는 아주 전방위에서 사용자를 괴롭히는 그런 문제가 되겠다.
원인은 ‘한글과 컴퓨터 아래아한글’. 정확히 말하면 한컴 오피스를 설치 할 때 함께 설치되는 “한컴입력기”.
두 번째 동영상과 같은 증상이 나타나면 “한컴 입력기”를 제거함으로써 증상을 고칠 수 있다.
방법은 다음과 같다
기본적으로 렌즈 필터라 함은 렌즈의 앞에 장착하여 부가적인 효과를 더해주는 도구를 말한다. 요즘에야 디지털 카메라로 촬영한 디지털 결과물을 포토샵 등의 프로그램으로 수정을 하니까 필터로 얻는 효과가 무엇이 있을까 싶기도 하지만 과거 필름을 주로 사용하던 시절은 촬영한 이후 결과물을 수정하는 것이 쉽지 않았기 때문에 필터를 장착함으로써 다양한 효과를 추가하였다.
필터의 종류와 세세한 역할은 이후에 포스팅 하기로 하고 이번 포스트에서는 몇 가지 종류와 개념만 소개한다.
이번 포스트에서는 렌즈의 보호를 위한 목적으로 필터를 사용하는 경우 (말그대로 렌즈 보호가 목적이므로 가격이 상대적으로 저렴한 필터를 사용하는 경우가 많다) 필터의 품질에 따라 사진이 어떻게 변하는가를 비교해보고자 한다.
어쩌면 당여한 얘기일 수 있지만 과거 초기의 디지털 카메라의 경우 센서의 부족한 성능으로 화질이 상대적으로 좋지 않았고 화소수도 적다보니 세밀한 차이는 도드라지지 않는 경우도 있었지만 근래 고화소 카메라의 경우는 필터의 품질에 따라 차이가 있을 수 있음을 이해하는 것이 그 목적이다.
실험에 사용한 장비는 다음과 같다.
– 바디 : 소니 a7M4 (모델명 :ILCE-7M4)
– 렌즈 : 소니 FE 200-600 F5.3-6.3 G OSS (모델명 : SEL200600G)
– 필터 : ALLDA UV 렌즈필터 95mm (온라인 가격비교 최저가 약 5000원)
SIGMA Protector 95mm (온라인 가격비교 최저가 약 11만원)
1상기 장비 선정 사유 : 200-600 렌즈 구입 후 부담되는 필터 가격에 (95mm 필터는 비싸다..) 1만원도 안하는 필터를 장착하고 촬영한 사진의 품질이 너무 좋지 않아 과연 이 품질 저하가 필터 탓인가 하는 의문에서 시작했기 때문이다.
리사이징 된 사진은 크게 차이가 나지 않는다.
sigma Protector : 특이사항은 없다.
자세히 보면 Allda UV filter #1.의 경우 품질이 떨어짐을 알 수 있고, (굵은 선의 경계을 자세히 보자)
Allda filter #2. 의 경우는 초점이 맞는 영역의 앞과 뒤 그러니까 0에서 멀어지는 선들이 두 개 씩 보이는 것을 확인할 수 있다.
(처음에는 핀이 안맞는 것이라 생각했다.)
해당 부분만 좀 더 확대 해보면
우측 사진은 +2, -2 부터 상이 이중으로 맺히는 것이 확연히 보인다.
2종의 필터임에도 세 장의 결과를 비교한 이유는
필터의 비교를 위해 필터를 교체해야 하니 필터를 헐겁게 체결하였는데 필터를 헐겁게 체결 했을 때와 그렇지 안을 때의 차이가 있었음을 발견했기 때문이었는데, 실제 동일한 필터임에도 약 90도 회전시켜 촬영을 해보니 상이 이중으로 촬영 되는 정도의 차이가 있음을 쉽게 확인할수 있었다.
여기서 왜 이와 같은 차이가 나는가에 대한 원인을 짐작해 볼 수 있었다. 2당연한 이야기지만 진짜 원인은 알 수 없다. 전문가도 아니고, 촬영을 통해 결과물의 비교 외에 다른 측정 (표면 굴곡 등)은 불가능 했기 때문이다.
증상이 난시와 비슷한 것으로 미루어 보아 첫 번째 의심 사유는 필터의 표면이 울퉁 불퉁 한것이 아닌가 하는 것. 불규칙적인 것은 아니고 아마도 물결처럼 일정한 방향의 패턴을 가지지 않을까 하는 것이다.
두 번째는 고른 연마가 되지 않았기에 연삭의 흔적이 있고 3필터를 뚫어져라 처다본다고 확인할 수 있는 정도로 보이는 흔적은 아니다. 4첫 번째 원인가 비슷한데 이 경우는 울퉁불퉁이 아니라 거친 사포로 표면을 문질렀을때 깎여 나가는 형태의 모양이다. 이 흔적에 따라 빛이 꺾이면서 상이 두개로 찍히는 것이 아닐까 한다.
결국 각도를 조절했을 때 결과물이 달라지는 것으로 보아 일정한 패턴의 굴절을 일으키는 무언가가 필터에 있다는 이야기가 아닐까 한다.
필자의 경우 항상 비주류 카메라에 저가의 렌즈만 사용하는 데다 실력도 워낙에 개차반인지라 애진작에 결과물의 해상도도 낮고 품질 자체도 낮다 보니 렌즈 필터는 제조사 등에 따라 딱히 결과물에 영향을 주지 않는 다고 생각했었다.
하지만 이번 실험 결과 렌즈 보호 용으로 사용하는 필터라 할지라도 제조사 혹은 가격 등에 따라 엄연히 품질의 차이가 존재하며, 기준 이하의 필터는 결과물에 아주 많은 영향을 미친다는 것이다.
결론의 결론
필터 구매 시 너무 싼건 사지 말자.
댓글을 달려면 로그인해야 합니다.