코골이가있는 앞마당 2 설정
Barnyard2는 Snort의 바이너리 출력을 MySQL 데이터베이스에 저장하고 처리하는 방법입니다. 시작하기 전에 코골이가 없으면
MongoDB는 2009 년에 개념을 도입 한 이후 NoSQL 산업을 주도 해 왔습니다. MongoDB의 핵심 개념 중 하나는 Replica Set이므로 먼저 작업하기 전에 개념을 검토 할 수 있습니다.
데이터베이스 복제에 사용되는 가장 간단한 통신 모델은 Master-Slave 아키텍처입니다. 이름에서 알 수 있듯이이 모델에는 고유 한 마스터와 많은 슬레이브에 두 가지 역할이 있으며 마스터의 역할은 클라이언트가 수행 한 읽기 및 쓰기 작업을 처리하는 것이며 슬레이브는 마스터의 복제본으로 취급됩니다.
이 모델의 가장 중요한 장점은 백업 작업으로 마스터의 성능이 저하되지 않고 백업 작업이 비동기 방식으로 수행되어 마스터 노드가 실패 할 때 심각한 문제가 될 수 있다는 것입니다. 슬레이브 노드는 읽기 전용이며 수동으로 마스터 노드로 승격해야하므로 이번에는 데이터가 손실 될 수 있습니다.
가용성 문제를 해결하기위한 한 가지 옵션은 아키텍처에 둘 이상의 마스터를 두는 것입니다. 그러나 이로 인해 해당 인스턴스 간의 데이터 일관성과 구성의 복잡성이 증가하는 데 또 다른 문제가 발생할 수 있습니다.
이제 상황 에 따라 MongoDB 의 Replica Set 기술을 제시 할 수 있습니다 . Replica Set는 자동 장애 조치 기능이있는 Master-Slave 아키텍처의 이름이므로 마스터 (현재 이름이 지정된 primary
) 노드가 제대로 작동하지 않는 순간 election
will 트리거가 발생하고 나머지 기본 노드에서 새 기본 노드가 선택됩니다 ( )라고합니다 secondaries
.
기본 노드는 쓰기 작업을 수행하는 유일한 노드이며 기본적으로 읽기 작업은 기본 노드에서도 처리하지만 나중에이 동작을 변경할 수 있습니다.
작업이 oplog
(작업 로그)에 기록 된 다음 보조 노드는 콘텐츠를 기반으로 비동기 적으로 콘텐츠를 업데이트합니다.oplog
참고 : oplog
캡이있는 컬렉션이므로 컬렉션에 제한 local.oplog.rs
이 있으며 세트 멤버의 mongo 셸 에서이 컬렉션의 내용을 확인할 수 있습니다.
데이터베이스의 적절한 백업을 수행하는 사람 외에도 보조 노드는 다음과 같은 역할을합니다.
이러한 특성 덕분에 다양한 유형의 보조 노드를 가질 수 있습니다.
primary
는 선거 가 될 수없고 선거를 촉발 할 수 없으며 여전히 선거에서 투표 할 수 있으며 완전한 복제본을 가지고 있으며 읽기 작업을 수락 할 수 있습니다. 이는 다중 데이터 센터 배포에 도움이 될 수 있습니다.Priority 0
멤버이지만 읽기 작업을 처리 할 수 없습니다. 필요한 경우 투표 할 수 있습니다. 이러한 구성원의 기본 작업은보고 및 백업입니다.priority 0
노드 여야하며 hidden
멤버이기도합니다.인프라를 배포하기 전에 인프라를 디자인하는 것이 중요하며이 디자인에서 고려해야 할 사항이 있습니다.
복제 세트를 구성 하는 최소 요소 수는 3입니다. 세 가지 유형의 노드를 최소 하나의 기본 노드와 하나의 보조 노드와 혼합 할 수 있습니다.
이 안내서에서는 1 차 및 2 차 표준 2 차로 3 개의 멤버를 배치합니다.
참고 : 중재자와 보조 구성원이 혼합 된 최대 7 명의 투표 구성원을 보유하는 것이 좋습니다.
이름은 단지 참조 용이지만 세트의 구성에 사용하고 있습니다. 프로덕션 환경에는 둘 이상의 복제본 세트가있을 수 있으므로 세트 이름을 무시하지 마십시오.
이 학습서는 사용자에게 세트 이름을 선택하도록 권장합니다.
이 자습서에서는 통신 문제가 발생하지 않도록 동일한 데이터 센터에 배포하는 것이 좋습니다.
참고 : 다른 데이터 센터에 배포 할 경우 VPN으로 노드를 감싸는 것이 좋습니다.
Ubuntu 16.04 x64의 3 개 노드를 시작하십시오. 가능하면 고객 포털과 같은 지역에 있습니다. 다루는 프로젝트 유형에 따라 이름을 지정하고 이러한 모든 노드에서 서버 크기가 동일 해야합니다 .
3 개의 노드를 배치 한 후에는 모든 노드가 나머지 노드와 통신 할 수 있는지 확인해야합니다. 를 사용하여 두 개의 노드로 ssh하고 다른 노드에 도달해야합니다 ping -c 4 EXAMPLE_IP
. EXAMPLE_IP
노드의 실제 IP로 변경하십시오 .
여기에서는 두 노드 간의 성공적인 통신 예를 볼 수 있습니다.
root@foo_node:~# ping -c 4 EXAMPLE_IP
PING EXAMPLE_IP (EXAMPLE_IP) 56(84) bytes of data.
64 bytes from EXAMPLE_IP: icmp_seq=1 ttl=59 time=0.594 ms
64 bytes from EXAMPLE_IP: icmp_seq=2 ttl=59 time=0.640 ms
64 bytes from EXAMPLE_IP: icmp_seq=3 ttl=59 time=0.477 ms
64 bytes from EXAMPLE_IP: icmp_seq=4 ttl=59 time=0.551 ms
--- EXAMPLE_IP ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3021ms
rtt min/avg/max/mdev = 0.477/0.565/0.640/0.064 ms
일반적으로 Ubuntu의 MongoDB 패키지를 사용할 수 있지만 공식 커뮤니티 저장소는 항상 최신 상태이므로 사용하는 것이 좋습니다. 이 저장소에는 다음 패키지가 포함되어 있습니다.
mongod
데몬 (데이터 요청을 처리하는 기본 프로세스) 이 포함 됩니다.mongos
데몬 (공유 배포를위한 라우팅 서비스) 이 포함되어 있습니다 .mongo shell
JavaScript 인터페이스입니다.패키지 설치를 진행하십시오.
공개 키를 패키지 관리 시스템으로 가져옵니다.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
MongoDB '/etc/apt/sources.list.d/mongodb-org-3.4.list'에 대한 목록 파일을 작성하십시오.
echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
패키지 데이터베이스를 업데이트하십시오.
sudo apt-get update
MongoDB 메타 패키지를 설치하십시오.
sudo apt-get install -y mongodb-org
MongoDB 서비스를 시작하십시오.
sudo service mongod start
이제 mongo shell
모든 bash 세션에서 를 열 수 있습니다 . 이렇게하려면 mongo
명령 을 사용해야합니다 . 당신은 이것과 비슷한 것을 맞이할 것입니다.
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
Server has startup warnings:
*Some extra logs are cut by the way*
>
을 사용하여 서비스를 종료하는 것을 잊지 마십시오. sudo service mongod stop
나중에 mongod
일부 매개 변수로 다시 시작하기 때문 입니다. 세트의 3 개 노드 모두에서이 프로세스를 반복하십시오.
키 파일을 사용하면 복제 세트 관리에서 두 가지 개념이 적용됩니다. 첫 번째는 Internal Authentication
입니다. 기본적 mongo shell
으로 사용자를 사용하지 않고 세션을 시작할 수 있으며이 세션은 데이터베이스를 완전히 제어 할 ��� 있지만 인증을 위해 키 파일을 사용하면 mongo shell
세션이라는 상태에 도달합니다 localhost exception
. 이 상태에서는 관리자 및 복제 세트 만 만들 수 있습니다. 두 번째 개념은 Role-Based Access Control
, 즉 인증입니다. 이것은 복제 수준에 대한 관리 수준을 관리하기 위해 시행됩니다.
키 파일은 세트에서 사용할 비밀번호이며이 비밀번호는 세트의 모든 멤버 에서 동일해야합니다 . 보안을 강화하려면 선택한 도구와 함께 임의의 키를 사용하는 것이 중요합니다.
내용은 6 ~ 1064 자 사이 여야합니다. 또한 read only
키 파일에 대한 권한을 설정해야 합니다.
chmod 400 PATH_OF_YOUR_KEYFILE
이제 키 파일을 모든 세트 멤버에 복사하고 나중에 참조 할 수 있도록 일관된 폴더를 사용하고 이동식 매체에 저장하지 마십시오.
또한 mongod
액세스 할 수 있는 파일의 폴더를 사용하십시오 .
이 단계 mongod daemon
에서 모든 세트 멤버에서 시작해야합니다 . mongod
프로세스 를 시작하는 두 가지 방법이 있습니다 : 구성 파일 사용 또는 명령 행 사용. 둘 다 매우 쉬운 방법이지만,이 튜토리얼에서는 간단하게하기 위해 명령 행 버전을 사용합니다.
이 명령에서 앞서 선택한 이름을 사용하십시오.
mongod --keyFile PATH_OF_YOUR_KEYFILE --replSet "YOUR_SET_NAME"
기본적 mongod
으로 데몬으로 실행되지 않습니다. --fork
매개 변수 를 사용하거나 매개 변수 를 사용하여 upstart
데몬으로 완전히 실행해야합니다. 이 자습서에서는 mongod
데몬으로 실행하지 않는 것이 좋으므로 터미널에 직접 로그를 볼 수 있습니다.
참고 : 복제 세트 이름은 생성 한 후에는 변경할 수 없으므로 신중하게 입력하십시오.
참고 : mongod
비 데몬 프로세스로 실행 하는 경우 작업을 계속하려면 다른 ssh 연결을 열어야합니다.
mongo
명령을 사용 하여을 열어야합니다 mongo shell
. 이것은 세트의 모든 멤버에서 수행 할 수 있습니다.
현재 우리는이라는 주에 localhost exception
있습니다. 키 파일을 사용하여 mongod
프로세스 를 설정하는 경우 , 읽기 / 쓰기 작업을 적용하기 전에 데이터베이스 관리자를 작성해야하지만 나중에 다루겠습니다.
이것은 우리가 명령을 사용하고, 섬세한 부분 rs.initiate()
내에서 mongo shell
이 명령하자 검토를 사용하기 전에 4 단계에서.
rs.initiate(
{
_id : <replicaSetName>,
members: [
{ _id : 0, host : "example1.net:27017" },
{ _id : 1, host : "example2.net:27017" },
{ _id : 2, host : "example3.net:27017" }
]
}
)
첫 번째 _id
필드는 문자열이며 --replSet
이전에 전달 된 것과 일치해야합니다 mongod
. 또한 각 값은 host
복제본 세트 각 구성원의 IP 또는 도메인 이름이어야합니다. 몽고 인스턴스가 각 멤버에서 사용하는 포트를 추가하는 것을 잊지 마십시오.
이제 데이터가 포함 된 명령을 실행할 차례입니다. 그러면 트리거가 election
시작되고 기본이 자동으로 선택됩니다.
여기서 쉘 커서가 YOUR_SET_NAME:PRIMARY>
또는로 변경되었습니다 YOUR_SET_NAME:SECONDARY
. 이것은 세트를 만드는 것이 성공했음을 의미합니다.
작업을 계속하려면을 (를) 찾아야합니다 primary
. rs.status()
명령을 사용하여 복제 세트 정보를 표시하고를 찾습니다 primary
. 당신은 재산을 찾고 있습니다 "stateStr" : "PRIMARY"
.
를 찾은 후 데이터를 primary
입력 mongo shell
하고 다음 명령을 실행하십시오.
admin = db.getSiblingDB("admin")
admin.createUser(
{
user: "YOUR_USER",
pwd: "YOU_PASSWORD",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
이 admin = db.getSiblingDB("admin")
부분을 통해 admin
다른 데이터베이스에서 쓸 수 있습니다 . 이것은이라는 별명을 생성 admin
하므로 대신 별명을 사용하여 명령을 실행할 수 있습니다.
작업이 성공하면 사용자가 추가되었다는 알림이 표시됩니다.
Successfully added user: {
"user" : "YOUR_USER",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
현재 모든 서버에 대한 관리자 만 있지만 복제본 세트를 사용하면 사용자에게 clusterAdmin
역할이 있습니다. 관심사를 분리하기 위해 해당 역할 만있는 다른 사용자를 만듭니다.
의 한도에 도달 localhost exception
했으므로 한 단계 전에 만든 사용자로 인증을 변경해야합니다.
mongo shell
다음을 사용하여 내부의 사용자를 변경할 수 있습니다 .
db.getSiblingDB("admin").auth("YOUR_ADMIN", "YOUR_PASSWORD" )
아직 연결하지 않은 mongo shell
경우이 명령을 대신 사용하십시오.
mongo -u "YOUR_ADMIN" -p "YOUR_PASSWORD" --authenticationDatabase "admin"
사용자 변경에 대한 알림을 받고 다음 단계로 넘어갈 수 있습니다.
이 clusterAdmin
역할은 사용자에게 복제 세트에 대한 모든 권한을 부여합니다. 관리자를 만드는 것만 큼 쉽습니다.
db.getSiblingDB("admin").createUser(
{
"user" : "YOUR_USER",
"pwd" : "YOUR_PASSWORD",
roles: [ { "role" : "clusterAdmin", "db" : "admin" } ]
}
)
이번에는 역할이로 변경되었습니다clusterAdmin
.
현재 2 명의 관리자가 있습니다. 하나는 서버를 완전히 제어하고 다른 하나는 복제본 세트 수준에서 관리 작업에 액세스 할 수 있습니다. 그러나 데이터베이스를 "사용"할 수있는 사용자가 없기 때문에 이제 해당 사용자를 만듭니다.
admin = db.getSiblingDB("admin")
admin.createUser(
{
user: "YOUR_USER",
pwd: "YOUR_PASSWORD",
roles: [ { role: "userAdminAnyDatabase", db: "cars" } ]
}
)
이번에는 db
부품을 변경하고 데이터베이스를 사용자가 액세스 할 수있게하는데이 경우에는이라는 데이터베이스를 사용합니다 cars
.
데이터베이스가 아직 작성되지 않았습니다. 이렇게하려면 암시 적으로 만들려면 몇 가지 명령을 입력해야합니다. cars
데이터베이스로 전환하십시오 .
use cars
알림을받습니다 : switched to db cars
.
데이터베이스가 아직 작성되지 않았으므로 무언가를 작성해야합니다. 우리는 다음 예제를 사용하고 있습니다.
db.models.insert({ make: "Dodge", model: "Viper", year: 2010 })
이번에는으로 알림을 WriteResult({ "nInserted" : 1 })
받습니다.
원하는 경우 다음 find()
방법으로 데이터베이스의 모든 객체를 검색 할 수 있습니다 .
db.models.find()
{ "_id" : ObjectId("59acd8b55334882863541ff4"), "make" : "Dodge", "model" : "Viper", "year" : 2010 }
즉 참고 _id
하여 출력 다를 수 있지만, 다른 데이터가 동일해야합니다. 충분한 시간이 주어지면이 데이터는 다른 구성원에게 복제됩니다.
복제 세트를 생성하는 것은 처음에는 이해하기 어려운 정보가 많기 때문에 어려울 수 있지만 일단 아이디어를 얻은 후에는 산들 바람에 배치 할 수 있으므로 처음으로 파악할 수없는 경우 포기하지 마십시오. 복제 세트는 MongoDB 관리에서 중요합니다. Load Balancing과 같은 고급 기능을 추가 할 가능성이 있기 때문입니다.
Barnyard2는 Snort의 바이너리 출력을 MySQL 데이터베이스에 저장하고 처리하는 방법입니다. 시작하기 전에 코골이가 없으면
MongoDB는 기본적으로 안전하지 않습니다. 인증을 위해 구성하지 않고 MongoDB를 설치하고 시작하는 경우 시간이 오래 걸립니다
Laravel GitScrum 또는 GitScrum은 개발 팀이 비슷한 방식으로 Scrum 방법론을 구현할 수 있도록 설계된 오픈 소스 생산성 도구입니다.
이 기사에서는 OpenBSD 6에 MariaDB를 설치하고 chroot 된 웹 서버 (Apache 또는 Nginx)에 액세스 할 수 있도록 구성하는 방법을 보여줍니다. 당신은 Als
다른 시스템을 사용하십니까? 소개 ArangoDB는 문서, 그래프 및 키-값을위한 유연한 데이터 모델을 갖춘 오픈 소스 NoSQL 데이터베이스입니다. 그것은
전제 조건 최신 Arch Linux를 실행하는 Vultr 서버 (이 기사 참조) Sudo 액세스 : 루트로 실행하는 데 필요한 명령 앞에는 #이 있고 하나는
MySQL은 데이터베이스에 사용되는 세계에서 가장 널리 사용되는 소프트웨어입니다. 데이터베이스 백업이 매우 중요합니다. 이 연습은
소개이 글에서, 사용자 정의 bash scrip을 사용하여 동일한 머신에있는 여러 MySQL 또는 MariaDB 데이터베이스를 백업하는 방법을 익히십시오.
다른 시스템을 사용하십니까? Apache Cassandra는 무료로 제공되는 오픈 소스 NoSQL 데이터베이스 관리 시스템으로 확장 성을 제공하도록 설계되었습니다.
다른 시스템을 사용하십니까? 소개 ArangoDB는 문서, 그래프 및 키-값을위한 유연한 데이터 모델을 갖춘 오픈 소스 NoSQL 데이터베이스입니다. 그것은
MongoDB는 빠르고 강력한 NoSQL 데이터베이스입니다. 그러나 데비안 리포지토리는 느리게 업데이트되며 종종 매우 오래된 버전의 패키지를 포함합니다. 이 tutoria
다른 시스템을 사용하십니까? Apache Cassandra는 무료로 제공되는 오픈 소스 NoSQL 데이터베이스 관리 시스템으로 확장 성을 제공하도록 설계되었습니다.
OrientDB는 차세대 다중 모델 오픈 소스 NoSQL DBMS입니다. 여러 데이터 모델을 지원함으로써 OrientDB는 더 많은 기능과 유연성을 제공 할 수 있습니다.
phpRedisAdmin은 직관적 인 그래픽 사용자 인터페이스로 Redis 데이터베이스를 관리하는 웹 애플리케이션입니다. 이 튜토리얼은 설치하는 방법을 설명합니다
전제 조건 최신 Linux Linux를 실행하는 Vultr 서버 (이 기사 참조) Sudo 액세스 : 루트로 실행해야하는 명령 앞에는 #이 있고 하나가 있습니다.
다른 시스템을 사용하십니까? Apache Cassandra는 무료로 제공되는 오픈 소스 NoSQL 데이터베이스 관리 시스템으로 확장 성을 제공하도록 설계되었습니다.
Redis는 종종 NoSQL 데이터베이스라고하는 키-값 데이터 스토리지 솔루션입니다. 인 메모리 부이므로 매우 높은 읽기 / 쓰기 속도를 달성 할 수 있습니다.
백업은 데이터베이스 처리에서 중요한 부분입니다. 회사 사이트를 운영하든 WordPress를 호스팅하든 관계없이 백업하는 것이 중요합니다.
전제 조건 Arch Linux 최신 버전으로 실행되는 Vultr 서버 (이 기사 참조) Sudo 액세스. 루트로 실행하는 데 필요한 명령 앞에는 #이 있고 하나는
Redis는 데이터 구조 저장소입니다. 캐싱에 최적화 된 접근 방식으로 인해 성능이 크게 향상되므로 WordPress 사이트에서 인기가 있습니다.
랜섬웨어 공격이 증가하고 있지만 AI가 최신 컴퓨터 바이러스를 처리하는 데 도움이 될 수 있습니까? AI가 답인가? AI boone 또는 bane인지 여기에서 읽으십시오.
오픈 소스이자 무료 운영 체제인 ReactOS가 최신 버전과 함께 제공됩니다. 현대 Windows 사용자의 요구 사항을 충족하고 Microsoft를 무너뜨릴 수 있습니까? 이 구식이지만 더 새로운 OS 환경에 대해 자세히 알아보겠습니다.
Whatsapp은 마침내 Mac 및 Windows 사용자용 데스크톱 앱을 출시했습니다. 이제 Windows 또는 Mac에서 Whatsapp에 쉽게 액세스할 수 있습니다. Windows 8 이상 및 Mac OS 10.9 이상에서 사용 가능
인공 지능이 소규모 회사에서 어떻게 인기를 얻고 있으며 어떻게 인공 지능이 성장할 가능성을 높이고 경쟁자가 우위를 점할 수 있는지 알아보려면 이 기사를 읽으십시오.
최근 Apple은 문제를 해결하기 위해 macOS Catalina 10.15.4 추가 업데이트를 출시했지만 이 업데이트로 인해 Mac 컴퓨터의 브릭킹으로 이어지는 더 많은 문제가 발생하는 것 같습니다. 자세히 알아보려면 이 기사를 읽어보세요.
빅데이터의 13가지 상용 데이터 추출 도구
우리 컴퓨터는 모든 데이터를 저널링 파일 시스템이라고 하는 체계적인 방식으로 저장합니다. 검색을 누르는 즉시 컴퓨터에서 파일을 검색하고 표시할 수 있는 효율적인 방법입니다.https://wethegeek.com/?p=94116&preview=true
과학이 빠른 속도로 발전하고 우리의 많은 노력을 인수함에 따라 설명할 수 없는 특이점에 처할 위험도 높아집니다. 특이점이 우리에게 무엇을 의미할 수 있는지 읽어보십시오.
26가지 빅 데이터 분석 기법에 대한 통찰: 1부
의료 분야의 AI는 지난 수십 년 동안 큰 도약을 했습니다. 따라서 의료 분야에서 AI의 미래는 여전히 나날이 성장하고 있습니다.