GNU Wget(간단히 Wget, 이전 이름: Geturl)는 웹 서버로부터 콘텐츠를 가져오는 컴퓨터 프로그램으로, GNU 프로젝트의 일부이다. 이 프로그램의 이름은 월드 와이드 웹과 get에서 가져온 것이다. HTTP, HTTPS, FTP 프로토콜을 통해 내려받기를 지원한다. 1위키백과에서 발췌
기본 명령은 단순하다. “wget 다운로드할_파일주소”
[root@host ~]# wget http://mirror.kakao.com/centos/8.2.2004/isos/x86_64/CentOS-8.2.2004-x86_64-boot.iso --2020-09-09 18:11:46-- http://mirror.kakao.com/centos/8.2.2004/isos/x86_64/CentOS-8.2.2004-x86_64-boot.iso
Resolving mirror.kakao.com (mirror.kakao.com)... 113.29.189.165
Connecting to mirror.kakao.com (mirror.kakao.com)|113.29.189.165|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 654311424 (624M) [application/octet-stream]
Saving to: ‘CentOS-8.2.2004-x86_64-boot.iso’
13% [========> ] 89,458,496 11.2MB/s eta 49s
다운로드 시 파일명 변경 원본 파일명은 CentOS-8.2.2004-x86_64-boot.iso이지만 다운로드 파일 이름은 centos-boot.iso 이 된다.
# zookeeper 시작
[kafka@kafka ~]$ $ZOOKEEPER_HOME/bin/zkServer.sh start
Using config: /home/kafka/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
# zookeeper 종료
[kafka@kafka ~]$ $ZOOKEEPER_HOME/bin/zkServer.sh stop
Using config: /home/kafka/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
# zookeeper 재시작
[kafka@kafka ~]$ $ZOOKEEPER_HOME/bin/zkServer.sh restart
Using config: /home/kafka/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
Using config: /home/kafka/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
# zookeeper 프로세스 확인
[kafka@kafka ~]$ jps -l
53088 sun.tools.jps.Jps
38497 kafka.Kafka
52964 org.apache.zookeeper.server.quorum.QuorumPeerMain
87046 org.apache.kafka.connect.cli.ConnectStandalone
# zookeeper 프로세스 확인
[kafka@kafka ~]$ jps -l
53088 sun.tools.jps.Jps
38497 kafka.Kafka
52964 org.apache.zookeeper.server.quorum.QuorumPeerMain
87046 org.apache.kafka.connect.cli.ConnectStandalone
# 네트워크 확인
[kafka@kafka ~]$ netstat -nltp
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3389 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:3350 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN -
tcp6 0 0 :::35068 :::* LISTEN 52964/java
tcp6 0 0 192.168.103.113:9092 :::* LISTEN 38497/java
tcp6 0 0 :::2181 :::* LISTEN 52964/java
tcp6 0 0 :::3888 :::* LISTEN 52964/java
tcp6 0 0 :::2888 :::* LISTEN 52964/java
tcp6 0 0 :::111 :::* LISTEN -
tcp6 0 0 :::8080 :::* LISTEN 52964/java
tcp6 0 0 :::8083 :::* LISTEN 87046/java
tcp6 0 0 :::37045 :::* LISTEN 87046/java
tcp6 0 0 :::42901 :::* LISTEN 38497/java
tcp6 0 0 :::22 :::* LISTEN -
로그 확인 일단 [ERROR], [CRITICAL] 같은 단어가 보이면 뭐가 잘못됐건 잘못 된 것이다. [WARN]의 경우는 보통 당장 구동에는 문제가 없지만 특정 작업, 조건 등에서 문제가 발생할 수 있다. 주의 깊게 봐야 한다.
[kafka@kafka ~]$ tail -100f $ZOOKEEPER_HOME/logs/zookeeper-kafka-server.out
2020-09-03 10:11:35,822 [myid:2] - WARN [QuorumConnectionThread-[myid=2]-2:QuorumCnxManager@400] - Cannot open channel to 3 at election address /192.168.113.138:3888
java.net.ConnectException: 연결이 거부됨 (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:607)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.initiateConnection(QuorumCnxManager.java:383)
at org.apache.zookeeper.server.quorum.QuorumCnxManager$QuorumConnectionReqThread.run(Qu ....
2020-09-03 10:11:35,828 [myid:2] - INFO [WorkerReceiver[myid=2]:FastLeaderElection$ ... 후략
예제의 경우 다른 zookeeper 노드가 아직 구동되지 않아 발생한 [WARN] 메시지가 존재한다. 나머지 노드가 구동되고 연결되면 [WARN] 메시지는 사라진다. 로그의 모든 내용을 설명하기는 어렵고 자주 바라보고 눈에 익숙해 질 수 있도록 해야한다.
1. 다운로드 및 압축 해제 – Apache zookeeper 홈페이지에서 필요한 버전을 선택하거나 여기를 클릭하여1글 작성일 2020년 09월01일 기준으로 최신버전은 3.6.1이다.다운로드 한다. – 다운로드한 파일을 FTP 또는 SFTP등을 이용하여 서버에 업로드한다. – 또는 wget 명령을 이용하여 서버에서 다운로드 한다.
[kafka@kafka ~]$ wget http://apache.tt.co.kr/zookeeper/zookeeper-3.5.8/apache-zookeeper-3.5.8-bin.tar.gz
--2020-09-01 08:27:41-- http://apache.tt.co.kr/zookeeper/zookeeper-3.5.8/apache-zookeeper-3.5.8-bin.tar.gz
Resolving apache.tt.co.kr (apache.tt.co.kr)... 211.47.69.77
Connecting to apache.tt.co.kr (apache.tt.co.kr)|211.47.69.77|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9394700 (9.0M) [application/x-gzip]
Saving to: ‘apache-zookeeper-3.5.8-bin.tar.gz’
100%[========================================================================>] 9,394,700 72.0KB/s in 2m 6s
2020-09-01 08:29:47 (72.8 KB/s) - ‘apache-zookeeper-3.5.8-bin.tar.gz’ saved [9394700/9394700]
[kafka@kafka ~]$ ll
합계 91272
-rw-r--r-- 1 kafka kafka 12436328 5월 1 04:53 apache-zookeeper-3.6.1-bin.tar.gz
drwxrwxr-x 76 kafka kafka 4096 9월 1 08:29 data
drwxr-xr-x 7 kafka kafka 245 8월 13 07:54 jdk1.8.0_251
lrwxrwxrwx 1 kafka kafka 16 8월 12 09:00 kafka -> kafka_2.13-2.6.0
drwxr-xr-x 9 kafka kafka 182 8월 13 09:48 kafka_2.13-2.6.0
-rw-r--r-- 1 kafka kafka 65537909 8월 5 07:01 kafka_2.13-2.6.0.tgz
drwxrwxr-x 2 kafka kafka 6 8월 12 09:07 perl5
– 압축을 해제하고 심볼릭 링크를 생성한다.2Symbolic-Link:윈도우즈의 바로가기 lnk파일과 유사하다.3심볼릭 링크를 사용하면 환경 변수의 관리가 편리하다. 예제의 경우 압축을 해제하면 ‘apache-zookeeper-3.6.1-bin’ 라는 이름의 디렉토리가 생성되는데 이 이름으로 환경 변수를 등록하여 운영 중 zookeeper 판올림을 할경우 환경변수를 변경 해야 한다. 또 ‘zookeeper’라는 이름으로 변경을 했을 경우 동일한 디렉토리에 파일을 교체해야 하므로 별도로 파일을 이동해줘야 하지만 심볼링 링크로 연결 했을 경우는 링크만 변경 하는 것으로 바이너리를 교체하는 효과를 볼 수 있다.
2. 환경변수 설정 ※ /home/kafka 디렉토리에 압축을 해제했고 kafka 계정을 사용하는 것으로 가정한다. – ~/.bash_profile 에 환경 변수를 등록한다. 4‘~‘ 는 사용자의 home 디렉토리를 의미한다. 홈 디렉토리는 /etc/passwd 에 기록 되어있다.
[kafka@kafka zookeeper]$ vi ~/.bash_profile
export JAVJA_HOME=/home/kafka/jdk1.8.0_251
export PATH=$PATH:$JAVA_HOME/bin
# JAVA_HOME 디렉토리 관련 설정.
#여기부터 추가한다.
export ZOOKEEPER_HOME=/home/kafka/zookeeper
export ZOOBINDIR=$ZOOKEEPER_HOME/bin
# zookeeper home 과 bin 설정
# $ZOOKEEPER_HOME/bin/zkEnv.sh 에 $ZOOBINDIR이 명시되어있긴 하지만
#편의를 위해 등록한다. zkEnv.sh 를 수정해도 된다.
export PATH=$PATH:$ZOOBINDIR
#zookeeper bin 디렉토리를 PATH에 등록
#변수를 별도록 export 하지 않으면 해당 변수는 '현재의 스크립트에서만 유효하다'
[kafka@zookeeper-kafka zookeeper]$ source ~/.bash_profile
3. zookeeper 설정 – 설정 파일 수정, node id 파일 생성, 클러스터간 설정 파일 동기화 세가지 작업이 필요하다.
가. $ZOOKEEPER_HOME/conf/zoo.cfg 파일을 생성하고 파일을 수정한다.
[kafka@kafka ~]$ vi $ZOOKEEPER_HOME/conf/zoo.cfg
tickTime=2000
# 단위는 밀리초. 신호를 보내고 응답이 오기까지 설정된 시간만큼 대기한다.
initLimit=10
# election 과정 이후 리더로 선출 된 zookeeper와 follower zookeeper들 간의
# 동기화 등에 사용되는 tick 시도 횟수. 즉 TickTime=2000에 initLimit=10일경우
# 총 20초동안 대기한다.
# 관리하는 데이터의 양이 많을 경우 값을 늘려준다.
syncLimit=5
# follower와 zookeeper 간의 동기화를 위한 틱 시도 횟수.
dataDir=/home/kafka/zookeeper/datadir
# zookeeper 데이터 디렉토리. tmp는 권장하지않는다.
clientPort=2181
# zookeeper로 관리되는 클라이언트가 zookeeper에 연결 할 때 사용하는 포트
maxClientCnxns=7
# 최대 접속 가능한 클라이언트 갯수.
# 관리 대상 클라이언트가 많으면 값을 늘려준다.
autopurge.snapRetainCount=3
# dataDir 디렉토리에 유지할 snapshot 갯수
autopurge.purgeInterval=1
# 정리(삭제) 시도 주기, 간격.
# 단위는 시간.
server.1=192.168.100.111:2888:3888;2181
server.2=zookeeper2:2888:3888;2181
server.3=zookeeper3.fqdn.name:2888:3888;2181
# 노드 정보. IP, host명(hosts 파일에 있는), FQDN 을 사용할 수 있다.
# 2888은 leader노드가 follower 노드를 위해 열어두는 포트(동기화용).
# 3888은 리더 선출을 위한 election 용 포트.
# server. 뒤에 오는 숫자는 노드의 식별자가 된다.
admin.enableServer=true
admin.serverPort=8000
admin.commandURL=/commands
# 관리 서버 설정.
# 사용하도록 설정하고 웹브라우저로 접속하면 커맨드 정보를 볼 수 있다.
[kafka@kafka ~]$ mkdir /home/kafka/zookeeper/datadir
[kafka@kafka ~]$ echo 1> /home/kafka/zookeeper/datadir/myid
# myid에 적는 숫자는 zoo.cfg 에 기록한 서버 번호와 일치 해야 한다.
[root@hostname ~]# vi /etc/login.defs
#아래 값들을 변경한다.
PASS_MAX_DAYS 90
#패스워드 최대 사용 기간. 90일 지나면 변경 해야 함
PASS_MIN_DAYS 0
#패스워드 최소 사용 기간. 변경 최소 0일간 변경 불가.
PASS_MIN_LEN 9
#패스워드 최소 길이. 9자 이상.
PASS_WARN_AGE 10
#패스워드 변경 경고 출력 기간. 변경일로부터 10일 전부터 표시.
2. 패스워드 복잡도 설정
[root@hostname ~]# vi /etc/security/pwquality.conf
minlen = 8
#패스워드 최소 길이
minclass = 4
#각기 다른 문자의 조합 수
#즉 4로 설정 했을 경우 숫자, 대문자, 소문자, 특수문자가 모두 포함 되어야한다.
#0은 설정 안함.
maxrepeat = 2
#연속으로 같은 문자의 사용 허용
maxclassrepeat = 0
#연속으로 같은 종류의 문자 사용 허용.
3. 계정 임계 값 설정
[root@hostname ~]# vim /etc/pam.d/system-auth
auth required pam_tally2.so deny=5 unlock_time=60
#5회 로그인 실패 시 계정이 잠기고 60초 이후에 풀린다.
1. 개요 Yum은 Yellow dog Updater, Modified의 약자로 RPM 기반의 시스템을 위한 자동 업데이터 겸 패키지 설치/제거 도구이다. 듀크 대학교의 Linux@DUKE 프로젝트의 일부분으로 개발되었다. yumex 같은 GUI 기반 확장 도구도 있다. Yum 이전에 있었던 Yellowdog Updater (YUP) 도구를 대체하며, 듀크 대학교 물리학부에서 사용되었던 레드햇 리눅스 시스템 관리를 위해서 등장하였다. 그 이후로 페도라, CentOS 등 많은 RPM 기반 리눅스 배포판에서 사용되었다. 레드햇의 패키지 관리자 up2date에서도 Yum 저장소에 접근할 수 있다. 현재 GNU 일반 공중 사용 허가서 버전 2 이상으로 사용 가능하다. Yum은 페도라 22 버전 이후부터 DNF로 전환되고 있다. 그러나 여전히 Yum의 전신인 rpm, 그리고 후신인 DNF와 같이 사용 가능하다.
rpm 패키지들에 대해 검색, 다운로드, 설치 기능을 편리하게 해 주는 것이 가장 큰 역할이지만, 가장 큰 장점은 의존성 1‘A’라는 패키지 설치를 위해 ‘가’ 라는 패키지가 필요할 경우 ‘A’에 대한 설치 명령만 수행해도 ‘가’ 패키지를 함께 다운로드하고 설치 해 준다. 문제를 자동으로 해결 해준다는 점이다.
2. Repository 파일 /etc/yum.repo.d/ 아래에 존재한다. ※ CentOS Base repository 예
[CentOS-repo]
name=CentOS-7- Base
# 리포지터리 이름 (단지 이름이다.)
baseurl=http://mirrorlist.centos.org
# 패키지를 다운로드할 수 있는 미러 목록이 포함된 URL 또는 저장소 자체 지정
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
# 리포지터리 주소
enabled=1
# 활성화 여부
gpgcheck=0
# gpg key 검증 여부
# 리포지터리에 있는 패키지 파일이 정상적인 파일인지확인한다. (변조 여부 등)
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#gpg key 위치
3. 사용법 : 검색 관련
[HOSTNAME:/root]# yum clean all
# Yum cache 삭제
[HOSTNAME:/root]# rm -rf /var/cache/yum
# yum clean all 명령의 에러 발생 등의 경우
[HOSTNAME:/root]# yum repolist
# /etc/yum.repo.d/ 아래의 모든 리포지터리 정보를 갱신한다.
[HOSTNAME:/root]# yum search PACKAGE_NAME
# PACKAGE_NAME 이라는 이름을 포함한 패키지를 검색한다.
[HOSTNAME:/root]# yum provides LIBRARY_NAME
# LIBRARY_NAME 이라는 라이브러리를 포함한 패키지를 검색한다.
[HOSTNAME:/root]# yum list
# 패키지 리스트를 출력한다.
[HOSTNAME:/root]# yum list installed
# 현재 설치된 패키지 리스트를 출력한다.
[HOSTNAME:/root]# yum list PACKAGE_FULL_NAME --show duplicate
# PACKAGE_FULL_NAME 패키지의 중복 여부 정보를 출력한다.
[HOSTNAME:/root]# yum list PACKAGE-VERSION
# PACKAGE 란 이름의 패키지 중 VERSION 에 해당하는 버전의 목록을 출력한다.
4. 사용법 : 패키지 설치
[HOSTNAME:/root]# yum install PACKAGE_NAME
# PACKAGE_NAME 패키지를 설치한다.
[HOSTNAME:/root]# yum install PACKAGE_NAME*
# PACKAGE_NAME으로 시작하는 이름의 패키지들을 설치한다.
[HOSTNAME:/root]# yum install PACKAGE_1 PACKAGE_2 PACKAGE_3
# PACKAGE_1, PACKAGE_2, PACKAGE_3 세개의 패키지를 설치한다.
[HOSTNAME:/root]# yum -y install PACKAGE_NAME
# 명령어 수행 시 사용자의 확인이 필요한 경우('진짜로 설치 하시겠습니까? 등 ')자동으로 y 가 입력되는 것과 같다
5. 사용법 : RPM 패키지 설치
[HOSTNAME:/root]# yum install /tmp/PACKAGE_1.rpm
# /tmp/PACKAGE_1.rpm 을 설치한다. 의존성 패키지가 필요한경우 리포지터리에서 자동으로 다운로드 하고 함께 설치 된다.
[HOSTNAME:/root]# yum install /tmp/*
# /tmp 디렉토리 내에 모든 rpm 을 설치한다.
댓글을 달려면 로그인해야 합니다.