참고
#OS튜닝
# nofile 및 nprc 갯수 튜닝
echo "* soft nofile 64000" >> /etc/security/limits.conf
echo "* hard nofile 64000" >> /etc/security/limits.conf
echo "* soft nproc 64000" >> /etc/security/limits.conf
echo "* hard nproc 64000" >> /etc/security/limits.conf
vim /etc/security/limits.d/20-nproc.conf 후에 64000으로 변경
Run the sysctl command below to apply the changed limits to the system:
sysctl -p
ulimit -a 명령어로 확인 가능
# repo 추가(red hat 계열) : 참고
vi /etc/yum.repos.d/mongodb-org-4.2.repo 이후 아래 입력
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
# repo 추가(amazon ami 이미지의 경우) : 참고
vi /etc/yum.repos.d/mongodb-org-4.2.repo 이후 아래 입력
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
# 설치
yum install -y mongodb-org
# 기본 설정 작업
#huge 설정
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
#재 부팅시 자동으로 시작(필요시)
systemctl enable mongod
#몽고 데이터 저장 디렉토리 생성 및 mongod계정의 소유로 변경(예)
mkdir -p /data/mongo/repl_0
chown -R mongod:mongod /data
#인증모드 적용 작업
#key 생성 -> 생성된 키는 모든 replica 멤버 몽고DB서버에 복사해야함
openssl rand -base64 755 > /data/mongo/mongo_repl.key
chown mongod.mongod /data/mongo/mongo_repl.key
chmod 400 /data/mongo/mongo_repl.key
#설정에 인증 활성화
vi /etc/mongod.conf 후 아래 내용 추가
security:
keyFile: /data/mongo/mongo_repl.key
authorization: enabled
#참고: 몽고DB authorization enable설정시 key파일 생성 방법
#Primary에서 key 파일 생성 (mongodb 간 접속을 위해서 필요)
#해당 key파일은 Secondary에 복사
sudo openssl rand -base64 756 > /data/mongo/mongo_repl.key
sudo chown mongod.mongod /data/mongo/mongo_repl.key
sudo chmod 400 /data/mongo/mongo_repl.key
# 아래 내용 복사하여 Secondary 에 동일하게 구성
cat /data/mongo/mongo_repl.key
#테스트(필요시 진행)
mongo 커맨드로 mongo접속 후
use admin
db.createUser({ user: "admin", pwd: "admin", roles: [ "root" ] })
db.auth("admin", "admin")
show dbs
#DB에 저장 및 find되는지 테스트
use test_db
db.test_col.insert({msg:"test insert message"})
db.test_col.find()
# 몽고 시작
#몽고 서비스 시작
systemctl start mongod
#몽고 프롬프트에 접속
mongo
#참고 : 몽고 삭제
systemctl stop mongod
#Remove any MongoDB packages that you had previously installed.
yum erase $(rpm -qa | grep mongodb-org)
#Remove MongoDB databases and log files.
rm -rf /var/log/mongodb
rm -rf /var/lib/mongo
#필요시
rm -rf /data
#참고 : 몽고 설정(/etc/mongod.conf)
-
특정파일의 config 파일을 이용하려면 mongod --config 파일경로 (이 명령어로는 root로 프로세스가 실행되니 필요시 init.d 등을 이용할수도 있음)
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
systemLog:
destination: file
logAppend: true
logRotate: rename
path: /var/log/mongodb/mongod.log
#quiet: true
# Where and how to store data.
storage:
engine: wiredTiger
directoryPerDB: true
wiredTiger:
engineConfig:
journalCompressor: snappy
#journalCompressor: zstd
#cacheSizeGB: 0.5
collectionConfig:
blockCompressor: snappy
#blockCompressor: zstd
indexConfig:
prefixCompression: true
dbPath: /data/mongo/repl_0
journal:
enabled: true
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.(AWS에서는 SG로 보안처리 하고 있어서 편의상 모두 허용하기도 함)
#security:
# keyFile: /data/mongo/mongo_repl.key
# authorization: enabled
#replication:
replication:
replSetName: repl_set
#참고 : 몽고 replica 설정
primary가 될 서버에서 몽고 콘솔로 접속 : mongo
#Replica set 초기화
rs.initiate()
#Secondary 노드 추가
rs.add("secondary장비의 IP:27017")
#Arbiter 노드 추가
rs.add("arbiter장비IP:37017",arbiterOnly:true)
# 잘 저장되는지 테스트
use testdb
db.test_collection.insert({'msg':'test message'})
db.test_collection.find()
#Secondary에서는 아래 명령 실행 후 조회해 보면 됨
db.slaveOk(true)
#참고: 계정 생성 방법
-- 유저 생성 및 권한 부여
use DB명 후;
db.createUser({ user: "유저ID입력 ", pwd: "암호입력", roles: [ "롤코드 입력" ] })
예) db.createUser({ user: "test-user", pwd: "pwd-1231", roles: [ "readWrite" ] })
-- 서버 접속 후 인증 방법
db.auth("<username>", "<password>" )
#root 권한으로 계정 생성 방법
use admin;
db.createUser({ user: "ID입력", pwd: "암호입력", roles: [ "root" ] })
#특정 DB만 엑세스 가능한 계정 생성 방법
use DB명 입력;
db.createUser({ user: "ID입력", pwd: "암호입력", roles: [ "readWrite" ] })
'NoSql > mongo(또는 tokumx)' 카테고리의 다른 글
mongodb multikey index (0) | 2020.08.05 |
---|---|
mongodb 4.2의 'Zstandard' 압축 효과 확인 (1) | 2020.07.23 |
mongodb 4.2서버에 java client 4.0.4로 커넥션 및 insert하는 샘플소스 (0) | 2020.07.07 |
몽고DB replica 재 설정 방법(샘플) (0) | 2019.09.04 |
mongo 4.0 설치방법 정리 (0) | 2018.11.29 |