SAMBA 서비스 포트 변경 및 마운트 하기

리눅스/OS 일반|2019. 6. 19. 13:18
반응형

[목적]

ISP 에서 차단된 SAMBA 포트를 변경하여 사용하고자 할 때

- tcp 139 > tcp 1390

- tcp 445 > tcp 4450

 

 

1. 포트 변경

 

# vi /etc/samba/smb.conf

[global]

smb ports = 4450 1390    // 추가

 

# service smb restart

 

* iptables 에서 tcp 1390, tcp 4450 포트 오픈하는 것 잊지 말자.

 

 

2. 마운트

 

2-1) 리눅스에서 마운트

# mount -t cifs -o username=testuser,password=1234,port=1390 //220.00.000.00/testuser /111

 

* 마운트 후 quota 적용 디스크량 말고 스토리지 전체 용량이 표시될 경우 smb 프로토콜 2를 사용하기 위해 vers=2.0 옵션을 추가해줍니다.

* 220.00.000.00 에 사용하는 IP 를 입력합니다.

 

2-2) 윈도우즈에서 마운트

 

(1) 루프백 어댑터 생성 및 설정

제어판  >  하드웨어  >  장치 관리자  >  서버명 우클릭 (레거시 하드웨어 추가)  >  목록에서 선택  >  네트워크 어댑터  >  제조사 : Microsoft, 모델 : Microsoft KM-TEST 루프백 어댑터  >  마침

제어판  >  네트워크 및 인터넷  >  네트워크 상태 및 작업 보기  >  어댑터 설정 변경  >  (좀전에 추가한 루프백 어댑터) 이더넷2 우클릭 (속성)
① Microsoft 네트워크용 파일 및 프린터 공유 : 체크 해제 (삭제는 아님)
② 인터넷 프로토콜 버전 4(TCP/IPv4) 속성
- IP 주소 : 10.0.0.1 (사용할 임의의 값)
- 서브넷 마스크 : 255.255.255.0

- 기본 게이트웨이 : (없음)

- DNS : (없음)

[고급] 버튼  >  [WINS] 탭  >  LMHOSTS 조회 가능 : 체크  >  NetBIOS over TCP/IP 사용 안 함 : 체크

 

* '식별되지 않은 네트워크' 라고 표시되어도 상관 없습니다.

 

(2) Windows 에서 139, 445 포트 비활성화

 

139 포트

명령프롬프트 창에서 아래와 같이 실행

wmic nicconfig where TcpipNetbiosOptions=0 call SetTcpipNetbios 2

 

445 포트

레지스트리 실행 (시작  >  실행  >  regedit) 후 아래 항목을 찾아 값을 비움

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ NetBT \ Parameters
- 항목 : TransportBindName, 종류 : REG_SZ, 값 : \Device\ 를 지우고 저장    // 잘 안됨. ㅜ.ㅜ

 

이후 적용을 위해 Windows 리부팅을 하면 445 포트가 사용되지 않게 됩니다.

 

(3) rinetd 설치 및 설정
rinetd 프로그램을 다운 받아서 압축을 풀고, C:\rinetd 로 옮깁니다.

- 다운로드 : http://www.boutell.com/rinetd/http/rinetd.zip

rinetd.zip
0.11MB

 

C:\rinetd\rinetd.conf 파일을 생성 후 아래 내용으로 입력합니다.

10.0.0.1 139 220.00.000.00 1390

10.0.0.1 445 220.00.000.00 4450

* 설명

10.0.0.1 은 전에 임의로 추가한 IP

139 는 목적지 포트

220.00.000.00 는 포워딩 될 삼바 서버 IP

1390 은 삼바 서버 PORT 

* 삼바 서버 IP 대신 도메인명으로도 연결이 가능합니다.

 

설정 저장 후 CMD를 통해서 구동합니다.

cd c:\rinetd

rinetd.exe -c rinetd.conf

 

* 구동시 'rinetd: couldn't bind to address 10.0.0.1 port 445' 에러 메세지가 뜬다면

   위 445 포트 비활성화 항목을 다시 살펴보세요. 445가 사용중이라서 오류가 출력됩니다.

 

삼바서버에서 [testuser] 라고 설정하였으면, 윈도우즈 client 에서 아래와 같이 마운트가 가능합니다.

 

[시작]  >  실행  >  \\10.0.0.1\testuser

 

 

반응형

댓글()

mongodump 사용시 조건을 주어 백업하기

리눅스/MySQL|2019. 6. 18. 09:25
반응형

원격일 경우,

--collection 컬렉션이름 : 이 옵션을 안쓰면 전체 db를 백업하게 됩니다.

 

mongodump --host 대상서버아이피 --port 포트번호 --db db이름 --collection 컬렉션이름 --out 백업시킬경로 --query 쿼리조건

 

 

예)

저희가 저장하고 있는 incident_traffic 컬렉션의 데이터 중

time : 2014-02-18 00:12:41

이렇게 시간 컬럼이 있습니다.

 

백업 서버 : 1.1.1.1

데이터가 실제 있는 서버 : 2.2.2.2

몽고DB의 포트 : 27017

db 이름 : aptsys

 

하루동안의 데이터만 백업시키려면 다음과 같이 합니다

 

mongodump -u userID -p userPW --host 2.2.2.2 --port 27017 --db aptsys --collection incident_traffic --out /home/mongo/backup --query '{time:{"$gte":"2014-02-18 00:00:00" ,"$lte":"2014-02-18 23:59:59"}}'

 

time 필드가 아니고 info 필드 내의 time 필드 (?) 일 경우 이와 같이 사용

> info.time

 

1.1.1.1 서버의 /home/mongo/backup 의 공간에 해당 데이터들이 쌓입니다.

 

주의점 -> 항상 전체 컬렉션에서 해당 쿼리에 맞는 데이터를 쌓기 때문에 오늘 덤프를 뜨든, 내일 덤프를 뜨든 늘 전체 데이터를 full scan 합니다. 항상 전체 데이터에서 퍼센테이지 올라가는거보고 " 왜 쿼리가 안먹혀? " 라고 생각하지 마세요~

 

백업된 dump 파일을 서버로 옮기려면

mongorestore 를 합니다.

 

mongorestore --host 127.0.0.1 --port 27017 /home/mongo/backup/aptsys

 

 

[출처] https://m.blog.naver.com/PostView.nhn?blogId=atoz333&logNo=120207822356&proxyReferer=https%3A%2F%2Fwww.google.com%2F

반응형

댓글()

mysqldump 사용시 조건을 주어 백업하기

리눅스/MySQL|2019. 6. 18. 08:16
반응형

# mysqldump -u root -p {DB명} {table명} --where="id='1234'" > filename.sql

 

위와 같이 --where 옵션에 조건을 주면 된다.

 

 

 

반응형

댓글()

[디스크 포맷에러] /dev/sdb1 is apparently in use by the system; will not make a filesystem here

리눅스/OS 일반|2019. 6. 17. 15:28
반응형

[리눅스에서 아래와 같은  디스크 포맷에러가 날 경우]

 

 /dev/sdb1 is apparently in use by the system; will not make a filesystem here'

 

dmsetup 명령을 통해

시스템에서 사용중인 Disk Device 에 대한 상태정보를 확인후

시스템에서 실제 사용중이지 않은 Garbage 정보를 Clear 한 후 파일 시스템 작성이 가능하다.

 

# dmsetup status
ddf1_1TB2ea0: 0 2097152 linear 
ddf1_1TB2ea0: 0 18612224 linear

 

# dmsetup remove_all    // 현재 사용중인 디스크는 안지워지므로 안심해도 됨

 

# dmsetup status
No device found!

 

#mkfs.ext4 /dev/sdb 
정상적인 포맷진행 ~~

 

 

[출처] http://dogsale.co.kr/bbs/board.php?bo_table=useguide&wr_id=308

반응형

'리눅스 > OS 일반' 카테고리의 다른 글

Google OTP를 사용한 SSH 인증  (0) 2019.06.21
SAMBA 서비스 포트 변경 및 마운트 하기  (0) 2019.06.19
haproxy on CentOS 7  (0) 2019.05.29
STUN 에 대한 설명  (0) 2019.05.16
ipvsadm (로드밸런싱) 설정  (0) 2019.05.16

댓글()

Ubuntu 에서 Apache 2.4 와 Tomcat 8 (2대) 연동하기

리눅스/APACHE|2019. 6. 12. 13:09
반응형

Apache 서버 : 49.247.214.95

Tomcat 서버 : 49.247.213.105

 

1. Apache 설치 및 설정

(Apache 서버에서)

[root@sysdocu ~]# apt-get -y update

[root@sysdocu ~]# apt-get -y install apache2

[root@sysdocu ~]# apt-get -y install libapache2-mod-jk

[root@sysdocu ~]# vi /etc/apache2/workers.properties

workers.tomcat_home=/usr/share/tomcat8    // Apache 서버에 이런 주소가 없어도 상관 없음
workers.java_home=/usr/lib/jvm/java-8-openjdk-amd64
# Define 1 real worker ajp13
worker.list=tomcat1
# Set properties for tomcat1 (ajp13)
worker.tomcat1.port = 8009
worker.tomcat1.host = 192.168.10.2   // Apache 와 Tomcat 을 하나의 서버로 운영한다면 'localhost' 로 변경
worker.tomcat1.type = ajp13
worker.tomcat1.lbfactor = 20

 

Tomcat 서버가 두 대라면, 아래와 같이 셋팅합니다.

worker.list= tomcat1, tomcat2    // 이름은 임의로 설정
 
worker.tomcat1.type=ajp13
worker.tomcat1.host=톰캣서버 IP
worker.tomcat1.port=8009
worker.tomcat1.lbfactor=1
 
worker.tomcat2.type=ajp13
worker.tomcat2.host=톰캣서버 IP
worker.tomcat2.port=8009
worker.tomcat2.lbfactor=2

 

[root@sysdocu ~]# vi /etc/apache2/mods-available/jk.conf

...(생략)...
JkWorkersFile /etc/apache2/workers.properties
...(생략)...

 

[root@sysdocu ~]# vi /etc/apache2/sites-enabled/000-default.conf

...(생략)...
DocumentRoot /var/www/html
JkMount /*.jsp tomcat1    // jsp 확장자는 tomcat1 서버에서 구동 되도록 설정을 추가 합니다.

...(생략)...

 

[root@sysdocu ~]# /etc/init.d/apache2 restart

 

2. Tomcat 설치 및 설정

(Tomcat 서버에서)

[root@sysdocu ~]# apt-get -y update

[root@sysdocu ~]# apt-get -y install tomcat8

[root@sysdocu ~]# vi /etc/tomcat8/server.xml

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />    // 주석 해제

 

[root@sysdocu ~]# /etc/init.d/tomcat8 restart

 

* Apache 서버에서 접속할 수 있게 iptables 방화벽에서 8009, 8080 포트를 오픈합니다.

 

3. 테스트

(Tomcat 서버에서)

[root@sysdocu ~]# vi /var/lib/tomcat8/webapps/ROOT/test.jsp

<%
String str = request.getParameter("name");
if(str == null)
{ str = "JSP"; }
%>
Hello, <%= str %>!!!

 

(PC 웹브라우저에서)

웹브라우저에서 아래와 같이 접속 테스트를 합니다.

 

http://192.168.10.2                      // 기본 아파치 index.html 페이지가 뜹니다.

http://192.168.10.2/test.jsp    // 톰캣 서버에서 생성한 test.jsp 페이지가 뜹니다.

 

반응형

댓글()

MySQL general 로그를 logrotate 로 관리하기

리눅스/MySQL|2019. 6. 4. 12:06
반응형

1. general 로그 설정

 

[root@sysdocu ~]# vi /etc/my.cnf

[mysqld]

general_log_file  = /usr/local/mysql/data/general.log

general_log  = 1

 

 

2. logrotate 설정

 

[root@sysdocu ~]# vi /etc/logrotate.d/mysql

/usr/local/mysql/data/general.log {

    daily

    rotate 1    // 사용중인것 말고 날짜로 된것 하나만 보관하도록 한다

    dateext

    missingok

    sharedscripts

    create 660 mysql mysql

    postrotate

        /usr/local/mysql/bin/mysqladmin -uroot -p'00000000' flush-logs

    endscript

}

 

[root@sysdocu ~]# chmod 640 /etc/logrotate.d/mysql

 

강제 실행 테스트

[root@sysdocu ~]# logrotate -f /etc/logrotate.d/mysql

 

 

3. 로그 압축 백업 설정

 

용량이 큰 general 로그를 압축하여 보관하도록 한다.

 

[root@sysdocu ~]# vi /etc/crontab

59 23 * * * root sh /root/general_log.sh

 

[root@sysdocu ~]# vi /root/general_log.sh

!#/bin/bash

 

find /data2/general_log/ -ctime +200 -print -exec rm -f {} \;

date=`date +%Y%m%d`

tar cvzf /data2/general_log/general_log_${date}.tar.gz /data1/general.log-${date}

 

exit 0

 

[root@sysdocu ~]# chmod 700 /root/general_log.sh

 

반응형

댓글()

haproxy on CentOS 7

리눅스/OS 일반|2019. 5. 29. 09:27
반응형

[root@sysdocu ~]# yum -y install haproxy

 

[root@sysdocu ~]# vi /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
    stats socket /var/lib/haproxy/stats

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

frontend  main *:80    // haproxy 구동시 사용할 포트를 지정
    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    acl url_static       path_end       -i .jpg .gif .png .css .js

    use_backend static          if url_static
    default_backend             static    // 아래 backend 중에서 static 부분을 사용하겠다는 것. 여러개 미리 설정해놓고 선택하는 식

backend static
    balance     roundrobin    // roundrobin은 무조건 한번씩 번갈아 접속시키는 방식이다. source 값을 이용해도 된다.
    server      static 192.168.10.2:80 check    // 포워딩할 서버 IP 와 포트
    server      static 192.168.10.3:80 check    // 포워딩할 서버 IP 와 포트

backend app
    balance     roundrobin
    server  app1 127.0.0.1:5001 check
    server  app2 127.0.0.1:5002 check
    server  app3 127.0.0.1:5003 check
    server  app4 127.0.0.1:5004 check

 

[root@sysdocu ~]# systemctl enable haproxy

 

[root@sysdocu ~]# service haproxy start

 

반응형

댓글()

STUN 에 대한 설명

리눅스/OS 일반|2019. 5. 16. 18:01
반응형

STUN을 쓰려면 각 플레이어의 호스트는 공인 IP로 공개된 중개 호스트, Xbox 라이브나 플레이스테이션 네트워크 서버에 연결해야 한다. 중개 호스트는, 여러 호스트가 서로 직접 연결하기 위해 필요한 작업을 중개해 주는데, 이를테면 라우터 테이블에 항목을 개설하는 방법 등을 알려준다. 그 절차는 그림 2-22와 비슷한 순서로 진행되는데, 그림 2-23은 이 과정에서 오가는 패킷의 예제와 NAT 테이블의 모습을 보여준다. 우리 게임이 UDP 200번 포트에서 구동 중이라 게임 호스트 간 통신이 모두 200번 포트에서 이루어진다고 가정해 보자.

 

 

 

 

 

먼저 호스트 A는 게임 서버를 개설할 의도를 IP 4.6.5.10의 중개 서버(호스트 N)에 알리는 패킷을 보낸다. 패킷이 라우터 A를 거쳐 갈 때, 라우터 ANAT 테이블에 항목을 만들고 공인 IP를 발신자 주소로, 그리고 발신자 포트를 임의의 숫자 60000번으로 할당하여 재기입한다. 그다음 수정한 패킷을 호스트 N으로 보내는데, 호스트 N이 이걸 받으면 플레이어 A가 공인 IP 주소 18.19.20.21:60000의 호스트 A에 멀티플레이어 게임 서버를 띄워두었다는 사실을 기억해 둔다.

다음 호스트 B는 플레이어 A의 게임에 참가하고 싶다고 호스트 N에 알리는 패킷을 보낸다. 패킷이 라우터 B를 거쳐 갈 때, 라우터 B 역시 NAT 테이블을 갱신하고 패킷을 재기입하여 호스트 N에 보낸다. 호스트 N이 패킷을 받으면 공인 IP 12.12.6.5:62000의 호스트 B가 호스트 A에 접속하려 한다는 사실을 알게 된다.

이 시점에 호스트 N은 라우터 A를 거쳐 호스트 A에 전달하기 위한 공인 IP와 포트 정보를 알고 있는데, 이 정보를 호스트 B에 응답으로 보내면 호스트 B가 호스트 A에 직접 연결할 수 있을 것 같기도 하다. 하지만 앞서 언급한 바와 같이, 대부분 라우터는 패킷의 발신자를 검사하여 원래의 발신자가 아닌 경우에는 차단한다. 라우터 A는 이 포트를 통해 들어오는 패킷 중 오로지 호스트 N의 것만 통과시킨다. 호스트 B가 이 포트로 호스트 A에 접속하려 하면 라우터 A는 그 포트로 호스트 B와 통신한 적이 없으므로 패킷을 막아버린다.

다행히도 호스트 N은 라우터 B를 거쳐 호스트 B에 전달하기 위한 공인 IP와 포트 역시 알고 있다. 이 정보를 호스트 A에 보내면, 라우터 ANAT 테이블에 호스트 N이 있으므로 라우터 A는 이 패킷을 통과시킨다. 이제 호스트 A는 호스트 N이 공유해준 정보로 호스트 B에 패킷을 하나 보낸다. 이 부분이 좀 이상하게 여겨질 수 있다. 호스트 A는 게임 서버요 호스트 B는 클라이언트인데, 클라이언트가 서버에 접속하는 대신, 게임 서버가 클라이언트에 접속하다니 말이다. 게다가 라우터 B는 호스트 A를 아직 모르고 있으므로 패킷을 보내보았자 막혀버릴 것이 뻔하다. 쓸데없는 패킷을 왜 보내는 걸까. 이런 작업을 하는 이유는 바로 이 과정을 거치며 라우터 A가 테이블에 항목 하나를 만들기 때문이다.

패킷이 호스트 A를 출발해 호스트 B로 가는 동안 라우터 A를 거친다. 라우터 ANAT 테이블에는 이미 192.168.10.2:200 항목이 외부 포트 60000에 매핑되어 있다. 그래서 패킷을 내보낼 때 60000번 포트로 내보낸다. 그리고 그 항목에 추가로 호스트 B의 정보 12.12.6.5:62000 항목을 하나 더 매핑한다. 매핑 항목을 이렇게 추가하게 만드는 것이 이 기법의 핵심이다. 패킷은 비록 호스트 B에 도달하기 전 라우터 B에서 막혀버리지만, 이제 호스트 N이 호스트 B에게 18.19.20.21:60000으로 연결하라고 알려주어, 호스트 B가 그 주소로 패킷을 보내면 라우터 AB가 보낸 패킷을 순순히 통과시킨다. 앞서 호스트 B에게 보내면서 12.12.6.5:62000 항목을 기억해 둔 상태이기 때문이다. 라우터 A는 수신자를 192.168.10.2:200으로 재기입하여 호스트 A에 전달한다. 이제부터 호스트 AB는 중개 서버를 거치지 않고도 서로 공유한 공인 IP와 포트로 통신할 수 있다.



Note ≣

NAT에 관해 몇 가지 더 알아두어야 할 것이 있다. 첫째, 앞에서 설명한 기법이 모든 NAT에서 동작하는 건 아니다. 일부 NAT는 할당한 포트 번호를 계속 유지하지 않는 것도 있는데, 이를 대칭형 NAT(symmetric NAT)라 한다. 대칭형 NAT는 밖으로 나가는 요청마다 고유한 외부 포트를 할당한다. 해당 IP 주소와 포트가 이미 NAT 테이블에 있을 경우라도 그렇다. 이 때문에 STUN 메커니즘이 깨지는데, 라우터 A가 첫 패킷을 호스트 B에 보내려 할 때 새로운 외부 포트를 할당하기 때문이다. 호스트 N이 썼던 외부 포트로 호스트 B가 라우터 A와 접촉해 호스트 A에 접근하려 할 때, NAT 테이블에 해당 정보가 없으므로 패킷이 버려진다.

대칭형 NAT 중 보안이 강하지 않은 것도 있어 이들 NAT는 예측 가능한 순서로 외부 포트를 할당하는데, 이 점을 노려 포트 할당 예측(port assignment prediction)이라는 기법으로 STUN과 비슷한 트릭을 써서 대칭형 NAT를 투과하기도 한다. 보안이 강화된 NAT는 아예 임의로 포트를 할당하므로 쉽게 예측하기 어렵다.

STUNUDP에서만 동작한다3장 버클리 소켓에서 설명하겠지만, TCP는 포트 할당 체계가 다르고 접속을 리스닝하는 포트와 데이터를 주고받는 포트가 다르므로 다른 방법을 써야 한다. TCP 홀 펀칭(TCP hole punching)이라는 기법을 쓰면 이를 지원하는 NAT 라우터를 투과할 수 있다2.11 더 읽을거리 절의 RFC 5128에 이외에도 다양한 NAT 투과 기법을 소개하고 있으며, TCP 홀 펀칭도 찾아볼 수 있다.

마지막으로, NAT 라우터를 투과하는 데 많이 쓰는 방법이 또 있다. IGDP(Internet gateway device protocol)라는 방법으로, 일부 UPnP(Universal Plug and Play) 라우터가 채용하여 랜 호스트로 하여금 외부와 내부 포트 사이에 매핑을 수동으로 설정토록 하는 프로토콜이다. 항상 지원되는 것도 아니며 학술 가치도 덜하므로 굳이 여기서 다루진 않겠다. 구체적인 내용은 2.11 더 읽을거리 절을 참고하자.

 

반응형

댓글()

ipvsadm (로드밸런싱) 설정

리눅스/OS 일반|2019. 5. 16. 11:19
반응형

궁핍한 서버관리자 분들에게 추천되는 방법이다. 돈 많으시면 그냥 L4 장비로 가십시요.ㅋㅋ

성능은 L4장비가 좋다.

셋팅하기위해서 아래와 같이 설정하겠다. 공인 아이피대신 그냥 사설아이피를 쓰겠다.

웹서비스를 위한 예제이다.

 

 로드밸런싱 서버 IP : 192.168.1.10    eth0
▶ Real 서버 1번 IP   : 192.168.1.11    eth0 
▶ Real 서버 2번 IP   : 192.168.1.12    eth0
 Virtual IP : 192.168.1.5 (DNS에 셋팅할 도메인과 맵핑할 Web IP 예를들어 192.168.1.5 = www.empas.com  ...ㅋ )

 

★ 로드밸런싱 서버 설정

LBSERVER# yum install ipvsadm             ===> RPM으로 ipvsadm 설치

LBSERVER# ifconfig eth0:0 192.168.1.5 netmask 255.255.255.255 up  

                                                  ===> 물리 랜카드 하나에 2개 아이피셋팅 etho 192.168.1.10, eth0:0 192.168.1.5           

LBSERVER# ipvsadm -A -t 192.168.1.5:80 -s rr

                                                             --라운드로빈(rr)-차례대로 리얼서버로                                                    
                                                             --가중라운드로빈(wrr)-라운드로빈+가중치                               
                                                             --최소연결(lc)-리얼 서버들중 가장 적은 수의 요청을 처리하는 서버 선택.
                                                             --가중최소연결(wlc)-최소연결+가중치                                   

LBSERVER# ipvsadm -a -t 192.168.1.5:80 -r 192.168.1.11:80 -g -w 5     ==> ipvs 테이블 설정

LBSERVER# ipvsadm -a -t 192.168.1.5:80 -r 192.168.1.12:80 -g -w 10

                                                 -a 추가, -t 대상타겟, -r 리소스 주소, -g 다이렉트 라우팅, -w 가중치 설정

LBSERVER# vi /etc/sysctl.conf
----------------------------------------------------------------
net.ipv4.ip_forward = 1               ===>  0을 1로 변경후 저장

----------------------------------------------------------------

LBSERVER# sysctl -p           ===> sysctl.conf 설정 적용    

LBSERVER# ipvsadm          ===>설정확인 , ipvsadm -C 설정 모두 삭제, ipvsadm -e -t ..설정 수정 
----------------------------------------------------------------------
IP Virtual Server version 1.2.0 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  211.233.5.72:http wlc
  -> 211.233.5.71:http            Route   10      0          0         
  -> 211.233.5.70:http            Route   10      0          0   
----------------------------------------------------------------------


★ Real 1번 서버 설정 ★

Real_1# ifconfig lo:0 192.168.1.5 netmask 255.255.255.255 up

Real_1# vi /etc/sysctl.conf 
-------------------------------------------------------------
net.ipv4.ip_forward = 1            ===>  0을 1로 변경

#linux-1 part

# ARP 문제 해결을위해 arp에 대한 응답 없음으로 설정(추가부분)
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth0.arp_announce = 2

------------------------------------------------------------------

Real_1# sysctl -p       ===> sysctl.conf 설정 적용

Real_1# vi /usr/local/apache/conf/httpd.conf 에서 virtualhost를 가상아이피(192.168.1.5)로 설정을 한다.

 

★ Real 2번 서버 설정 ★

리얼서버 1번과 같이 설정한다.

 

 확인하기 

그리고 나서 로드밸런싱서버, 리얼 서버1, 리얼서버2 에서 /etc/rc.d/init.d/network restart 해준다.

당연히 웹서비스 로드밸런싱이기 때문에 리얼서버 1,2 번에는 웹이 돌아가야지 테스트 확인이가능하다.

리얼1에는 index.htm 파일에 리얼1번이라는 웹페이지를 만들어주고 리얼2에는 index.htm 파일에 리얼2번이라는 웹페이지를

만들어준다. 

이제 www.empas.com 도메인으로 접속하면 한번은 리얼1번에가따가 또 한번은 리얼2번으로 갈것이다.

위에서 지정한  rr, wrr, lc, wlc 를 용도에 맞게 바꿔 가면서 스케줄링을 하면된다.

 

 

[출처] 간단한 로드밸런싱 IPVSADM 설정 |작성자 삽질맨

반응형

'리눅스 > OS 일반' 카테고리의 다른 글

haproxy on CentOS 7  (0) 2019.05.29
STUN 에 대한 설명  (0) 2019.05.16
NFS 간단 설정 방법 - CentOS, Rocky Linux, Ubuntu  (0) 2019.03.28
CentOS 7 커널 순서 변경  (0) 2019.03.22
히스토리에 시간 남기기  (0) 2018.12.21

댓글()

MySQL 5.7 소스 설치하기

리눅스/MySQL|2019. 5. 13. 09:39
반응형

필수 구성 요소

# yum -y install wget gcc* ncurses-devel

 

 

1. cmake 설치

# cd /usr/local/src

# wget http://github.com/Kitware/CMake/releases/download/v3.18.4/cmake-3.18.4.tar.gz

# tar xvzf cmake-3.18.4.tar.gz

# cd cmake-3.18.4

# ./bootstrap

# make

# make install

 

MySQL 5.7.x 설치시 boost 라이브러리를 참조하기 때문에 이부분을 컴파일 과정에서 추가해줘야 됩니다.

 

# cd ..

# wget http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz

# tar xvfz boost_1_59_0.tar.gz

# mv boost_1_59_0 /usr/local/

 

MySQL ./configure 설행시 아래 옵션 잊지말고 추가합니다.

-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost_1_59_0

 

 

2. 계정 생성

# groupadd -g 400 mysql
# useradd -u400 -g400 -d /usr/local/mysql -s /bin/false mysql

 

 

3. MySQL 설치

# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26.tar.gz

# tar xvzf mysql-5.7.26.tar.gz

# cd mysql-5.7.26

# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DSYSCONFDIR=/etc -DMYSQL_TCP_PORT=3306 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost_1_59_0

# make

# make install

 

[참고]

euckr 로 설치를 원할 경우 옵션을 변경해줍니다.

-DDEFAULT_CHARSET=euckr -DDEFAULT_COLLATION=euckr_korean_ci

 

 

4. DB생성 및 기본 보안 설정

 

실행 파일을 생성하고 부팅시 자동 구동 되도록 합니다.

# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# chmod 700 /etc/init.d/mysqld
# chown root.root /etc/init.d/mysqld
# chkconfig --add mysqld

 

기본 DB 를 생성하기 전에 환경 설정 파일을 먼저 만들어 줍니다.

# vi /etc/my.cnf

[client]
default-character-set = utf8

[mysqld]
server-id = 1
skip-name-resolve
max_connections = 10240
thread_cache_size = 50
wait_timeout = 28800
sort_buffer_size = 512K
collation-server = utf8_general_ci
character-set-server = utf8
skip-character-set-client-handshake
default-storage-engine = InnoDB
innodb_file_per_table = 1
innodb_data_home_dir = /usr/local/mysql/data
innodb_data_file_path = ibdata1:1024M:autoextend
innodb_autoextend_increment = 100
innodb_log_group_home_dir = /usr/local/mysql/data
innodb_buffer_pool_size = 5G
innodb_log_buffer_size = 16M
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 1
innodb_thread_concurrency = 0
innodb_lock_wait_timeout = 20
innodb_force_recovery = 0
innodb_flush_method = O_DSYNC
innodb_doublewrite = 0
innodb_sync_spin_loops = 20
innodb_table_locks = 1
innodb_thread_sleep_delay = 1000
innodb_max_purge_lag = 0
innodb_commit_concurrency = 0
innodb_concurrency_tickets = 500

log-bin = binlog
max_binlog_size = 1G

general_log = 1
general_log_file = /usr/local/mysql/data/general_query.log

slow-query-log = 1
long_query_time = 10
slow_query_log_file = /usr/local/mysql/data/slow_query.log

[mysqldump]
default-character-set = utf8

[mysql]
default-character-set = utf8

 

이제 기본 DB 를 생성합니다.

MySQL 5.7 의 경우 아래와 같이 초기화할 경우 root 패스워드 없이 생성됩니다.

# /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

 

초기화시 패스워드가 랜덤으로 생성되게 하려면 위 파란색 옵션을 아래 옵션으로 대체하면 됩니다.

(설치 화면 마지막줄에 출력)

--initialize

 

mysql 을 가동하고 root 패스워드를 새로 설정합니다.

MySQL 5.7 버전부터 mysql.user 테이블의 password 필드는 사라졌고, 변경 방법이 아래와 같이 바뀌었습니다.

 

# /etc/init.d/mysqld start

# /usr/local/mysql/bin/mysql -p

Enter password: (설치시 패스워드)

 

mysql> alter user root@localhost identified with mysql_native_password by '새패스워드';

mysql> flush privileges; 

 

반응형

댓글()

MongoDB 관리자 패스워드 초기화

리눅스/MongoDB|2019. 4. 16. 14:01
반응형

MongoDB root 패스워드 초기화 방법입니다.

DB shell 로그인하기 위해 기본적으로는 패스워드를 입력하게 되어 있습니다.

하지만 유사시 패스워드 없이 로그인 하는 방법이 있습니다.

 

MongoDB 3.4.20

 

# vi /etc/mongod.conf

// 인증없이 로그인 가능하도록 2줄 주석 처리

#security:
#  authorization: enabled

 

# systemctl restart mongod

 

# mongo

 

> use admin

 

계정 리스트 출력시켜 관리자 계정 확인하기 (admin 데이터베이스에 액세스 가능한 계정)

> db.system.users.find()

 

패스워드 변경

> db.changeUserPassword("계정명", "새비밀번호")

 

/etc/mongod.conf 파일에 주석처리 해놓은 부분을 다시 주석 해제 후

 

# systemctl restart mongod

 

로그인이 잘 되는지 확인합니다.

 

# mongo admin -u 계정명 -p 새비밀번호

 

 

 

반응형

댓글()