Ինչպես տեղադրել OpenSearch-ը Docker-ի միջոցով Ubuntu 22.04-ում


Այս էջում

  1. Նախադրյալներ
  2. Համակարգի կարգավորում
  3. Docker CE-ի և Docker Compose-ի տեղադրում
  4. OpenSearch Docker պատկերների ներբեռնում
  5. Նախագծերի տեղեկատուի կարգավորում
  6. SSL/TLS վկայագրերի ստեղծում

    1. Ստեղծեք CA վկայագրեր
    2. Ստեղծեք ադմինիստրատորի վկայականներ
    3. Ստեղծեք OpenSearch Dashboards-ի վկայագրեր
    4. Ստեղծեք վկայագրեր OpenSearch հանգույցների համար
  7. Օգտագործողի կարգավորում
  8. Կարգավորեք docker-compose.yml սցենարը
  9. Կարգավորեք OpenSearch և OpenSearch վահանակները
  10. OpenSearch Cluster-ի և OpenSearch-ի վահանակների տեղակայում
  11. Մուտք գործել OpenSearch Dashboards
  12. Եզրակացություն

OpenSearch-ը համայնքի վրա հիմնված նախագիծ է Amazon-ի կողմից և Elasticsearch-ի և Kibana-ի պատառաքաղ: Այն լիովին բաց կոդով որոնման համակարգ է և վերլուծական հավաքակազմ՝ հարուստ հնարավորություններով և նորարարական գործառույթներով: OpenSearch նախագծի հիմնական բաղադրիչն է OpenSearch-ը (Elasticsearch-ի պատառաքաղ) և OpenSearch Dashboards-ը (Kibana-ի պատառաքաղ): Երկու բաղադրիչներն էլ ապահովում են այնպիսի առանձնահատկություններ, ինչպիսիք են ձեռնարկության անվտանգությունը, զգուշացումը, մեքենայական ուսուցումը, SQL, ինդեքսային վիճակի կառավարումը և այլն:

OpenSearch-ը 100% բաց կոդով է և լիցենզավորված է Apache 2.0-ի լիցենզիայի ներքո: Այն հնարավորություն է տալիս հեշտությամբ ներծծել, ապահովել, որոնել, համախմբել, դիտել և վերլուծել տվյալները մի շարք օգտագործման դեպքերի համար, ինչպիսիք են տեղեկամատյանների վերլուծությունը, հավելվածների որոնումը, ձեռնարկությունների որոնումը և այլն:

Այս ձեռնարկում դուք կտեղադրեք և կարգավորեք OpenSearch-ը՝ բաց կոդով որոնման համակարգ և վերլուծական հավաքակազմ, և OpenSearch Dashboards-ը՝ բաց կոդով վիզուալիզացիայի գործիք, Docker-ի միջոցով Ubuntu 22.04 սերվերի վրա: Դուք կտեղակայեք OpenSearch կլաստերը մի քանի կոնտեյներով և մեկ OpenSearch Dashboard Docker-ի և Docker Compose-ի միջոցով: Դուք նաև կապահովեք ձեր տեղակայումը հատուկ TLS վկայագրերով և նույնականացումն ու թույլտվությունը միացնելով:

Այս ուղեցույցը օգտագործում է թարմ ընդհանուր Ubuntu սերվեր, ուստի այս ձեռնարկը ներառում է Docker շարժիչի և Docker Compose-ի տեղադրումը Ubuntu 22.04 համակարգում:

Նախադրյալներ

Այս ուղեցույցը լրացնելու համար դուք պետք է ունենաք հետևյալ պահանջները.

  • Ubuntu 22.04 սերվեր՝ նվազագույն օպերատիվ հիշողությամբ 4-8 ԳԲ – Այս օրինակում օգտագործվում է Ubuntu սերվեր՝ հյուրընկալողի անունով '' և IP հասցեով:
  • Ոչ արմատային օգտատեր՝ sudo/root ադմինիստրատորի արտոնություններով:

Երբ այս պահանջները պատրաստ լինեն, այժմ կարող եք սկսել OpenSearch-ի տեղադրումը:

Համակարգի կարգավորում

Այս առաջին քայլում դուք կպատրաստեք ձեր Ubuntu համակարգը OpenSearch-ի տեղակայման համար: Դուք պետք է անջատեք SWAP-ը և paging-ը, այնուհետև կավելացնեք առավելագույն հիշողության քարտեզը '/etc/sysctl.conf' ֆայլի միջոցով:

Գործարկեք ստորև նշված հրամանը՝ ձեր համակարգում փոխանակումն անջատելու համար: Այստեղ «sed» հրամանը ընդմիշտ կանջատի փոխանակումը '/etc/fstab' ֆայլի միջոցով՝ ավելացնելով «#» մեկնաբանությունը տողերի փոխանակման կազմաձևման սկզբում: «swapoff» հրամանը կանջատի փոխանակումն ընթացիկ նստաշրջանում:

sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo swapoff -a

Հաջորդը, ստուգեք փոխանակման կարգավիճակը ստորև նշված հրամանի միջոցով: Եթե անջատված է, դուք պետք է ելք ստանաք «0» փոխանակման բաժնում:

free -m

Արդյունք:

Վերջապես, դուք կավելացնեք կազմաձևը '/etc/sysctl.conf' ֆայլում՝ ձեր Ubuntu համակարգի առավելագույն հիշողության քարտեզները մեծացնելու համար:

Գործարկեք ստորև նշված հրամանը՝ «vm.max_map_count=262144» պարամետրը «/etc/sysctl.conf» ֆայլի տողի վերջում ավելացնելու համար: Այնուհետև կիրառեք փոփոխությունները 'sysctl -p' հրամանի միջոցով:

sudo echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sudo sysctl -p

Այժմ ստուգեք առավելագույն հիշողության քարտեզները՝ գործարկելով ստորև նշված հրամանը: Եթե հաջողվի, ձեր հիշողության առավելագույն քարտեզը պետք է լինի «262144»:

cat /proc/sys/vm/max_map_count

Արդյունք:

Եթե փոխանակումն անջատված է, և հիշողության առավելագույն քարտեզն ավելացել է մինչև «262144», դուք հաջորդիվ կսկսեք Docker շարժիչի և Docker Compose-ի տեղադրումը:

Docker CE-ի և Docker Compose-ի տեղադրում

Կան OpenSearch-ի տեղակայման և տեղադրման բազմաթիվ եղանակներ, դուք կարող եք տեղադրել OpenSearch-ը ավանդական եղանակով վիրտուալ մեքենայի վրա կամ տեղադրել այն կոնտեյների միջավայրում:

Եթե նախընտրում եք ավանդական տեղադրումը վիրտուալ մեքենայի վրա, կարող եք ձեռքով տեղադրել OpenSearch-ը Tarball-ի կամ փաթեթների կառավարչի միջոցով (RHEL-ի վրա հիմնված բաշխումների համար): Կոնտեյներների տեղակայման համար կարող եք տեղադրել OpenSearch-ը Docker-ի և Kubernetes-ի հետ:

Այս օրինակում դուք կտեղադրեք OpenSearch-ը կոնտեյներացված միջավայրում Docker շարժիչի և Docker compose-ի միջոցով: Այսպիսով, այժմ դուք կտեղադրեք Docker փաթեթներ պաշտոնական Docker պահոցից:

Սկսելու համար գործարկեք ստորև նշված apt հրամանը՝ հիմնական կախվածությունները տեղադրելու համար: Մուտքագրեք y, երբ ձեզ հուշում են, և սեղմեք ENTER՝ շարունակելու համար:

sudo apt install ca-certificates curl gnupg lsb-release

Արդյունք:

Հաջորդը, գործարկեք ստորև նշված հրամանը՝ Docker փաթեթների համար GPG բանալին և պահեստը ավելացնելու համար:

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Արդյունք:

Դրանից հետո թարմացրեք և թարմացրեք ձեր Ubuntu փաթեթի ինդեքսը ստորև նշված apt հրամանի միջոցով:

sudo apt update

Արդյունք:

Ավելացված Docker պահոցով այժմ կարող եք տեղադրել Docker շարժիչը և Docker Compose հավելվածը՝ օգտագործելով ստորև նշված apt հրամանը: Երբ ձեզ հուշում են, մուտքագրեք y, ապա սեղմեք ENTER՝ շարունակելու համար:

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Արդյունք:

Docker ծառայությունը կսկսվի և կմիանա ավտոմատ կերպով: Դուք կարող եք ստուգել Docker ծառայությունը հետևյալ systemctl հրամանի օգտակար ծրագրի միջոցով:

sudo systemctl is-enabled docker
sudo systemctl status docker

Դուք պետք է ելք ստանաք, որ Docker ծառայությունը միացված է և կաշխատի ավտոմատ կերպով բեռնման ժամանակ: Իսկ Docker ծառայության կարգավիճակը գործում է:

Վերջապես, որպեսզի ձեր ոչ արմատային օգտատերը գործարկի Docker կոնտեյները, դուք պետք է ավելացնեք ձեր օգտվողին «docker» խմբին: Գործարկեք ստորև ներկայացված usermod հրամանը՝ ձեր օգտվողին «docker» խմբին ավելացնելու համար: Նաև համոզվեք, որ փոխեք օգտվողի անունը ձեր օգտատիրոջ հետ:

sudo usermod -aG docker alice

Այժմ կարող եք մուտք գործել որպես ձեր օգտվող և գործարկել Docker կոնտեյները ստորև նշված հրամանի միջոցով:

su - alice
docker run hello-world

Հաջողության դեպքում դուք պետք է ստանաք բարև աշխարհի հաղորդագրությունը Docker կոնտեյներից, ինչպես հետևյալ սքրինշոթը:

OpenSearch Docker պատկերների ներբեռնում

Այս քայլում դուք կներբեռնեք OpenSearch և OpenSearch Dashboards պատկերները DockerHub-ից: Այնուհետև դուք կգործարկեք նոր OpenSearch կոնտեյներ՝ փորձարկման նպատակով:

Գործարկեք հետևյալ հրամանը՝ OpenSearch և OpenSearch Dashboards պատկերները ներբեռնելու համար:

docker pull opensearchproject/opensearch:latest
docker pull opensearchproject/opensearch-dashboards:latest

Արդյունք:

Ներբեռնումն ավարտվելուց հետո գործարկեք ստորև նշված հրամանը՝ ձեր համակարգի Docker պատկերների ցանկը ստուգելու համար: Դուք կտեսնեք, որ OpenSearch և OpenSearch Dashboards պատկերները հասանելի են ձեր համակարգում:

docker images

Արդյունք:

Հաջորդը, դուք կարող եք նաև գործարկել OpenSearch-ը Docker-ի միջոցով ուղղակիորեն՝ օգտագործելով ստորև նշված հրամանը: Սա կստեղծի և կաշխատի OpenSearch կոնտեյները մեկ ռեժիմով և կբացահայտի լռելյայն TCP 9200 և 9600 պորտերը հյուրընկալող մեքենայի վրա:

docker run -d -p 9200:9200 -p 9600:9600 -e "discovery.type=single-node" opensearchproject/opensearch:latest

Ստորև բերված «docker ps» հրամանի միջոցով ստուգեք գործող կոնտեյների ցանկը:

docker ps

Դուք պետք է ստանաք այսպիսի արդյունք. OpenSearch կոնտեյները ստեղծվել է և այն աշխատում է: Բացահայտված TCP պորտերը 9200 և 9600 ինչպես կոնտեյների, այնպես էլ Docker հոսթի վրա:

Դուք կարող եք մուտք գործել ձեր OpenSearch կոնտեյներ ստորև բերված curl հրամանի միջոցով: OpenSearch կոնտեյների կանխադրված օգտանունն ու գաղտնաբառը «admin» է:

curl https://localhost:9200 -ku 'admin:admin'

Հաջողության դեպքում դուք պետք է ստանաք այսպիսի արդյունք. OpenSearch կոնտեյները աշխատում է և հասանելի է Docker հոսթ մեքենայի միջոցով:

Այժմ կարող եք գործարկել ստորև «docker» հրամանը՝ OpenSearch կոնտեյները դադարեցնելու և ջնջելու համար: Քանի որ հաջորդ քայլում դուք կստեղծեք OpenSearch կլաստեր Docker Compose-ի միջոցով: Համոզվեք, որ փոխեք կոնտեյների անունը հետևյալ հրամանում:

docker stop container-name or container-id
docker rm container-name or container-id

Ապահովելու համար, որ OpenSearch կոնտեյները հեռացված է, գործարկեք 'docker ps' հրամանը՝ «-a» լրացուցիչ ընտրանքով: Սա ձեզ ցույց կտա հասանելի կոնտեյներներ երկու կարգավիճակներով՝ գործարկված և դուրս եկած:

docker ps -a

Արդյունք:

Նախագծերի տեղեկատուի կարգավորում

Մուտք գործեք ձեր օգտվողին հետևյալ հրամանով. Այս օրինակը օգտագործում է օգտվողի «alice», այնպես որ համոզվեք, որ փոխեք օգտվողի անունը ստորև նշված հրամանում:

su - alice

Այժմ ստեղծեք ծրագրի նոր գրացուցակ «opensearch-project», որը կօգտագործվի որպես ձեր նախագծի հիմնական արմատային գրացուցակ, և «certs» գրացուցակը, որը կօգտագործվի պահելու համար: հատուկ TLS վկայագրեր:

mkdir -p ~/opensearch-project/certs; cd ~/opensearch-project

«opensearch-project» գրացուցակում գործարկեք ստորև նշված հրամանը՝ նոր ֆայլեր ստեղծելու համար, որոնք կօգտագործվեն OpenSearch կոնտեյներներ և OpenSearch Dashboards ստեղծելու համար:

touch docker-compose.yml opensearch.yml opensearch_dashboards.yml internal_users.yml

Ֆայլերի ցանկը.

  • docker-compose.yml - Docker Compose-ի հիմնական կոնֆիգուրացիան OpenSearch նախագծի համար:
  • opensearch.yml - հատուկ կազմաձևում OpenSearch կոնտեյներների համար:
  • opensearch_dashbaords.yml - հատուկ կազմաձևում OpenSearch Dashboards կոնտեյների համար:
  • internal_users.yml - օգտատերերի անհատական վավերացում և թույլտվություն OpenSearch և OpenSearch Dashboard-ների համար:

SSL/TLS վկայագրերի ստեղծում

Այս քայլում դուք կստեղծեք բազմաթիվ TLS վկայագրեր, որոնք կօգտագործվեն ձեր OpenSearch-ի տեղակայումն ապահովելու համար: Դուք կստեղծեք հետևյալ վկայականները.

  • Root CA վկայագրեր. այս վկայագրերը կօգտագործվեն այլ վկայագրեր ստորագրելու համար:
  • Ադմինիստրատորի վկայականներ. այս վկայագրերը կօգտագործվեն՝ ադմինիստրատիվ իրավունքներ ստանալու համար՝ բոլոր առաջադրանքների հետ կապված անվտանգության հավելվածը կատարելու համար:
  • OpenSearch Dashboards-ի վկայագրեր. այս վկայագրերը կօգտագործվեն OpenSearch Dashboards-ը պաշտպանելու համար և թույլ են տալիս մուտք գործել OpenSearch Dashboards HTTPS կապերի միջոցով:
  • Հանգույցի և հաճախորդի վկայագրեր. այս վկայագրերը կօգտագործվեն OpenSearch կլաստերի մեջ գտնվող հանգույցների և հաճախորդների կողմից:

Սկսելու համար գործարկեք ստորև նշված հրամանը՝ ստեղծելու նոր դիրեկտորիաներ, որոնք կօգտագործվեն լարային TLS վկայագրերի համար:

mkdir -p certs/{ca,os-dashboards}

Ստեղծեք «MYDN» միջավայրի նոր փոփոխական, որը կօգտագործվի նոր TLS վկայագրեր ստեղծելու համար: Համոզվեք, որ փոխեք մանրամասները ձեր տեղեկություններով:

export MYDN="/C=CA/ST=ONTARIO/L=TORONTO/O=HWDOMAIN"

Այժմ դուք պատրաստ եք ստեղծել TLS վկայականներ ձեր OpenSearch-ի տեղակայման համար:

Ստեղծեք CA վկայագրեր

Ստեղծեք անձնական բանալի արմատային CA վկայագրերի համար՝ օգտագործելով ստորև:

openssl genrsa -out certs/ca/ca.key 2048

Այժմ ստեղծեք ինքնաստորագրված արմատային CA վկայագիր ստորև նշված հրամանի միջոցով: «-subj» պարամետրի արժեքը օգտագործում է «MYDN» միջավայրի փոփոխականը, որը դուք ստեղծել եք ձեր ընթացիկ նստաշրջանում:

openssl req -new -x509 -sha256 -days 1095 -subj "$MYDN/CN=CA" -key certs/ca/ca.key -out certs/ca/ca.pem

Դրանով դուք պետք է ստանաք «ca.key» արմատային CA մասնավոր բանալին և «ca.pem» արմատային CA վկայագիրը: Դուք կարող եք հաստատել CA վկայականները, որոնք դուք ստեղծել եք հետևյալ հրամանի միջոցով:

ls certs/ca/

Արդյունք – Դուք պետք է ստանաք CA մասնավոր բանալին «ca.key» և CA վկայագրի «ca.pem» ֆայլը:

Ստեղծեք ադմինիստրատորի վկայականներ

Ստեղծեք նոր ադմինիստրատորի վկայականի անձնական բանալին «admin-temp.key» և ստացված վկայագիրը փոխարկեք PKCS#12-ին համատեղելի ալգորիթմի (3DES): Այս դեպքում ձեր ադմինիստրատորի անձնական բանալին պետք է լինի «admin.key»:

openssl genrsa -out certs/ca/admin-temp.key 2048
openssl pkcs8 -inform PEM -outform PEM -in certs/ca/admin-temp.key -topk8 -nocrypt -v1 PBE-SHA1-3DES -out certs/ca/admin.key

Այնուհետև գործարկեք ստորև նշված հրամանը՝ «admin.key» անձնական բանալիից ադմինիստրատորի CSR (Վկայագրի ստորագրման հարցում) ստեղծելու համար: Ձեր ստեղծած CSR-ն այժմ պետք է լինի «admin.csr» ֆայլը:

openssl req -new -subj "$MYDN/CN=ADMIN" -key certs/ca/admin.key -out certs/ca/admin.csr

Այժմ գործարկեք ստորև նշված հրամանը՝ ադմինիստրատորի CSR-ն արմատային CA վկայականով և անձնական բանալիով ստորագրելու համար: Ադմինիստրատորի վկայագրի ելքը «admin.pem» ֆայլն է:

openssl x509 -req -in certs/ca/admin.csr -CA certs/ca/ca.pem -CAkey certs/ca/ca.key -CAcreateserial -sha256 -out certs/ca/admin.pem

Վերջապես, ստուգեք ձեր վկայականների ցանկը հետևյալ հրամանի միջոցով.

ls certs/ca/

Արդյունք – Դուք պետք է տեսնեք ադմինիստրատորի վկայականի ֆայլերը «admin.pem» և մասնավոր բանալին «admin.key»:

Ստեղծեք OpenSearch Dashboards-ի վկայագրեր

Ստեղծեք նոր վկայագիր, որը կօգտագործվի OpenSearch Dashboards-ի համար:

Գործարկեք հետևյալ հրամանը՝ «os-dashboards-temp.key» մասնավոր բանալին ստեղծելու համար և ստացված վկայագիրը փոխարկեք PKCS#12-ի հետ համատեղելի ալգորիթմի (3DES): Այս դեպքում ձեր ադմինիստրատորի անձնական բանալին պետք է լինի «os-dashboards.key»:

openssl genrsa -out certs/os-dashboards/os-dashboards-temp.key 2048
openssl pkcs8 -inform PEM -outform PEM -in certs/os-dashboards/os-dashboards-temp.key -topk8 -nocrypt -v1 PBE-SHA1-3DES -out certs/os-dashboards/os-dashboards.key

Հաջորդը, գործարկեք ստորև նշված հրամանը՝ OpenSearch Dashboard-ների համար CSR (Վկայագրի ստորագրման հարցում) ստեղծելու համար: Ձեր ստեղծած CSR-ն այժմ պետք է լինի «os-dashboards.csr» ֆայլը:

openssl req -new -subj "$MYDN/CN=os-dashboards" -key certs/os-dashboards/os-dashboards.key -out certs/os-dashboards/os-dashboards.csr

Այժմ գործարկեք ստորև նշված հրամանը, որպեսզի ստորագրեք OpenSearch Dashboards CSR-ը արմատային CA վկայականով և անձնական բանալիով: Ադմինիստրատորի վկայագրի ելքը «os-dashboards.pem» ֆայլն է:

openssl x509 -req -in certs/os-dashboards/os-dashboards.csr -CA certs/ca/ca.pem -CAkey certs/ca/ca.key -CAcreateserial -sha256 -out certs/os-dashboards/os-dashboards.pem

Վերջապես, գործարկեք հետևյալ հրամանը՝ OpenSearch Dashboards CSR ֆայլը ջնջելու և OpenSearch Dashboards-ի ձեր վկայականների ցանկը ստուգելու համար:

rm certs/os-dashboards/os-dashboards-temp.key certs/os-dashboards/os-dashboards.csr
ls certs/os-dashboards/

Արդյունք – Դուք պետք է տեսնեք OpenSearch Dashboards վկայականի ֆայլերը «os-dashboards.pem» և մասնավոր բանալին «os-dashboards.key»:

Ստեղծեք վկայագրեր OpenSearch հանգույցների համար

Գործարկեք հետևյալ հրամանը՝ հանգույցների վկայագրեր ստեղծելու համար: Դրանով դուք կստեղծեք բազմաթիվ դիրեկտորիաներ «վկայականների» գրացուցակի տակ և կստեղծեք TLS վկայագրեր մի քանի հոսթների համար:

for NODE_NAME in "os01" "os02" "os03"
do
    mkdir "certs/${NODE_NAME}"
    openssl genrsa -out "certs/$NODE_NAME/$NODE_NAME-temp.key" 2048
    openssl pkcs8 -inform PEM -outform PEM -in "certs/$NODE_NAME/$NODE_NAME-temp.key" -topk8 -nocrypt -v1 PBE-SHA1-3DES -out "certs/$NODE_NAME/$NODE_NAME.key"
    openssl req -new -subj "$MYDN/CN=$NODE_NAME" -key "certs/$NODE_NAME/$NODE_NAME.key" -out "certs/$NODE_NAME/$NODE_NAME.csr"
    openssl x509 -req -extfile <(printf "subjectAltName=DNS:localhost,IP:127.0.0.1,DNS:$NODE_NAME") -in "certs/$NODE_NAME/$NODE_NAME.csr" -CA certs/ca/ca.pem -CAkey certs/ca/ca.key -CAcreateserial -sha256 -out "certs/$NODE_NAME/$NODE_NAME.pem"
    rm "certs/$NODE_NAME/$NODE_NAME-temp.key" "certs/$NODE_NAME/$NODE_NAME.csr"
done

Ստուգեք դիրեկտորիաների ցանկը «վկայագրեր» գրացուցակի վրա:

ls certs/

Արդյունք - Դուք պետք է ստանաք նոր դիրեկտորիաներ 'os01, os02, եւ os03:

Վերջապես, ստորև նշված հրամանի միջոցով ստուգեք վկայագրերի ցանկը, որոնք հասանելի են os01, os02, և os03 գրացուցակներում:

ls certs/os01/
ls certs/os02/
ls certs/os03/

Արդյունք – Յուրաքանչյուր գրացուցակում դուք պետք է ստանաք երկու վկայական «osX.key» և «osX.pem»:

Ի վերջո, դուք պետք է փոխեք «վկայագրեր» գրացուցակի սեփականությունը «1000» ստորև նշված հրամանի միջոցով: Սա թույլ կտա Docker կոնտեյներներին մուտք գործել «վկայագրեր» գրացուցակ:

sudo chown -R 1000:1000 certs/

Ստեղծված TLS վկայագրերով դուք հաջորդիվ կստեղծեք հաշված գաղտնաբառեր և կսահմանեք OpenSearch օգտվողներին:

Օգտագործողի կարգավորում

Այս քայլում դուք կստեղծեք գաղտնաբառի հեշ, որը կօգտագործվի OpenSearch և OpenSearch Dashboards-ի կողմից: Դուք կստեղծեք երկու գաղտնաբառի հեշեր երկու տարբեր օգտվողների համար, այնուհետև կփոփոխեք «internal_users.yml» և OpenSearch օգտվողների կազմաձևման ֆայլը:

Գործարկեք հետևյալ docker հրամանը՝ գաղտնաբառի նոր հեշ ստեղծելու համար: Սա կգործարկի ժամանակավոր OpenSearch կոնտեյներ և գործարկելու է «hash.sh» սկրիպտը՝ գաղտնաբառի հեշ ստեղծելու համար:

docker run -it --rm opensearchproject/opensearch sh -c "/usr/share/opensearch/plugins/opensearch-security/tools/hash.sh"

Այժմ մուտքագրեք ձեր գաղտնաբառը, և դուք պետք է ստանաք հաշված գաղտնաբառը ձեր տերմինալում: Պատճենեք ստեղծված հեշ գաղտնաբառը և նորից գործարկեք հրամանը՝ այլ հեշ գաղտնաբառ ստեղծելու համար:

Արդյունք - OpenSearch-ի օգտատերերի համար ստեղծված գաղտնաբառի հաշված:

Այնուհետև բացեք «internal_users.yml» ֆայլը՝ օգտագործելով հետևյալ նանո խմբագրիչի հրամանը:

nano internal_users.yml

Ֆայլին ավելացրեք հետևյալ տողերը և համոզվեք, որ փոխեք հաշված գաղտնաբառը ձեր ստեղծած գաղտնաբառով: Դրանով դուք կսահմանեք երկու օգտվող ձեր OpenSearch-ի տեղակայման համար: «admin» օգտվողը որպես OpenSearch-ի ադմինիստրատոր և «kibanaserver» օգտվողը, որը կօգտագործվի OpenSearch Dashboard-ներին միանալու համար:

---
# This is the internal user database
# The hash value is a bcrypt hash and can be generated with plugin/tools/hash.sh
_meta:
  type: "internalusers"
  config_version: 2
# Define your internal users here
admin:
  hash: "$2y$12$y8UzXWoZKQc8GTgGsRz4g.CarjlC6sMPYN8XOD/NPQysRi2oq.Ws6"
  reserved: true
  backend_roles:
  - "admin"
  description: "Admin User"
kibanaserver:
  hash: "$2y$12$AKpGe4tM5nIWYFoM56yRue22pQh0jFfx59MUgUKnBu8qnyGeAm2Ze"
  reserved: true
  description: "OpenSearch Dashboards user"

Պահպանեք ֆայլը և ավարտից հետո դուրս եկեք խմբագրիչից:

Կարգավորեք docker-compose.yml սցենարը

Այս քայլում դուք կստեղծեք նոր Docker Compose սցենար՝ OpenSearch և OpenSearch Dashboards տեղակայելու համար: Դուք կստեղծեք մի քանի OpenSearch կոնտեյներներ՝ OpenSearch կլաստերը կարգավորելու համար, և դուք կստեղծեք OpenSearch Dashboards կոնտեյներ, որը միացված կլինի OpenSearch կլաստերին:

Բացեք «docker-compose.yml» ֆայլը՝ օգտագործելով հետևյալ նանո խմբագրիչի հրամանը:

nano docker-compose.yml

Ֆայլին ավելացրեք հետևյալ տողերը.

version: '3.7'
services:
  os01:
    restart: always
    image: opensearchproject/opensearch:latest
    environment:
      OPENSEARCH_JAVA_OPTS: "-Xms1024m -Xmx1024m" # minimum and maximum Java heap size, recommend setting both to 50% of system RAM
      node.name: os01
      discovery.seed_hosts: os01,os02,os03
      cluster.initial_master_nodes: os01,os02,os03
      plugins.security.ssl.transport.pemkey_filepath: certificates/os01/os01.key # relative path
      plugins.security.ssl.transport.pemcert_filepath: certificates/os01/os01.pem
      plugins.security.ssl.http.pemkey_filepath: certificates/os01/os01.key
      plugins.security.ssl.http.pemcert_filepath: certificates/os01/os01.pem
      DISABLE_INSTALL_DEMO_CONFIG: "true"
      JAVA_HOME: /usr/share/opensearch/jdk
      bootstrap.memory_lock: "true" # along with the memlock settings below, disables swapping
      network.host: "0.0.0.0"
    ulimits: 
      memlock:
        soft: -1
        hard: -1
    volumes:
      - "./opensearch.yml:/usr/share/opensearch/config/opensearch.yml"
      - "./internal_users.yml:/usr/share/opensearch/config/opensearch-security/internal_users.yml"
      - "os-data1:/usr/share/opensearch/data"
      - "./certs:/usr/share/opensearch/config/certificates:ro"
    ports:
      - 9200:9200
      - 9600:9600 # required for Performance Analyzer
  
  os02:
    restart: always
    image: opensearchproject/opensearch:latest
    environment:
      OPENSEARCH_JAVA_OPTS: "-Xms1024m -Xmx1024m" # minimum and maximum Java heap size, recommend setting both to 50% of system RAM
      node.name: os02
      discovery.seed_hosts: os01,os02,os03
      cluster.initial_master_nodes: os01,os02,os03
      plugins.security.ssl.transport.pemkey_filepath: certificates/os02/os02.key # relative path
      plugins.security.ssl.transport.pemcert_filepath: certificates/os02/os02.pem
      plugins.security.ssl.http.pemkey_filepath: certificates/os02/os02.key
      plugins.security.ssl.http.pemcert_filepath: certificates/os02/os02.pem
      DISABLE_INSTALL_DEMO_CONFIG: "true"
      JAVA_HOME: /usr/share/opensearch/jdk
      bootstrap.memory_lock: "true" # along with the memlock settings below, disables swapping
      network.host: "0.0.0.0"
    ulimits: 
      memlock:
        soft: -1
        hard: -1
    volumes:
      - "./opensearch.yml:/usr/share/opensearch/config/opensearch.yml"
      - "./internal_users.yml:/usr/share/opensearch/config/opensearch-security/internal_users.yml"
      - "os-data2:/usr/share/opensearch/data"
      - "./certs:/usr/share/opensearch/config/certificates:ro"
  
  os03:
    restart: always
    image: opensearchproject/opensearch:latest
    environment:
      OPENSEARCH_JAVA_OPTS: "-Xms1024m -Xmx1024m" # minimum and maximum Java heap size, recommend setting both to 50% of system RAM
      node.name: os03
      discovery.seed_hosts: os01,os02,os03
      cluster.initial_master_nodes: os01,os02,os03
      plugins.security.ssl.transport.pemkey_filepath: certificates/os03/os03.key # relative path
      plugins.security.ssl.transport.pemcert_filepath: certificates/os03/os03.pem
      plugins.security.ssl.http.pemkey_filepath: certificates/os03/os03.key
      plugins.security.ssl.http.pemcert_filepath: certificates/os03/os03.pem
      DISABLE_INSTALL_DEMO_CONFIG: "true"
      JAVA_HOME: /usr/share/opensearch/jdk
      bootstrap.memory_lock: "true" # along with the memlock settings below, disables swapping
      network.host: "0.0.0.0"
    ulimits: 
      memlock:
        soft: -1
        hard: -1
    volumes:
      - "./opensearch.yml:/usr/share/opensearch/config/opensearch.yml"
      - "./internal_users.yml:/usr/share/opensearch/config/opensearch-security/internal_users.yml"
      - "os-data3:/usr/share/opensearch/data"
      - "./certs:/usr/share/opensearch/config/certificates:ro"
  
  osdashboards:
    restart: always
    image: opensearchproject/opensearch-dashboards:latest
    ports:
      - 5601:5601
    volumes:
      - "./certs:/usr/share/opensearch-dashboards/config/certificates:ro"
      - "./opensearch_dashboards.yml:/usr/share/opensearch-dashboards/config/opensearch_dashboards.yml"
    environment:
      OPENSEARCH_HOSTS: '["https://os01:9200","https://os02:9200","https://os03:9200"]' # must be a string with no spaces when specified as an environment variable
      DISABLE_INSTALL_DEMO_CONFIG: "true"
volumes:
  os-data1:
  os-data2:
  os-data3:

Ավարտելուց հետո պահպանեք և դուրս եկեք «docker-compose.yml» ֆայլից:

Դրանով դուք կստեղծեք 4 կոնտեյներ/ծառայություններ OpenSearch-ի տեղակայումների համար: Ստորև բերված է մանրամասն տեղեկատվություն յուրաքանչյուր կոնտեյների մասին:

  • 3 OpenSearch կոնտեյներներ os01, os02 և os03 - Սա կօգտագործվի OpenSearch կլաստեր ստեղծելու համար: Այս բեռնարկղերը հիմնված են «opensearchproject/opensearch:last» պատկերի և նույն կազմաձևերի վրա՝ «opensearch.yml» և «internal_users.yml»:
  • OpenSearch Dashboards-ի «osdashboards» կոնտեյները հիմնված է «opensearchproject/opensearch-dashboards:last» պատկերի վրա և միացված է OpenSearch os01, os02 երեք սերվերի հետ: > և os03: Բացի այդ, դուք կանջատեք ցուցադրական կազմաձևումը OpenSearch Dashboards կոնտեյների վրա:
  • Բոլոր բեռնարկղերը OpenSearch և OpenSearch Dashboards-ը կապահովվեն հատուկ TLS վկայագրերի միջոցով, որոնք հասանելի են «վկայագրեր» գրացուցակում:
  • OpenSearch կոնտեյները կբացահայտի երկու նավահանգիստ 9200 և 9600, իսկ OpenSearch Dashboards կոնտեյները կբացահայտի 5601 նավահանգիստը:

Կարգավորեք OpenSearch և OpenSearch վահանակները

Այս քայլում դուք կստեղծեք նոր կոնֆիգուրացիա OpenSearch 'opensearch.yml' և OpenSearch Dashboards 'opensearch_dashbaords.yml' համար: Ի վերջո, դուք պետք է համոզվեք, որ բոլոր անհրաժեշտ կոնֆիգուրացիաները և վկայագրերը հասանելի են OpenSearch նախագծի գրացուցակում:

Բացեք OpenSearch կազմաձևման ֆայլը 'opensearch.yml' օգտագործելով հետևյալ նանո խմբագրիչ հրամանը:

sudo nano opensearch.yml

Ֆայլին ավելացրեք հետևյալ տողերը. Համոզվեք, որ փոխեք CA վկայագրերի և DN-ի ուղին ինչպես ադմինիստրատորի, այնպես էլ հանգույցի վկայագրերի համար: Դրանով դուք կստեղծեք OpenSearch կլաստեր՝ «os-cluster» անունով:

cluster.name: os-cluster
network.host: 0.0.0.0
bootstrap.memory_lock: "true" # along with the memlock settings below, disables swapping
plugins.security.allow_unsafe_democertificates: true
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemtrustedcas_filepath: certificates/ca/ca.pem
plugins.security.ssl.transport.enabled: true
plugins.security.ssl.transport.pemtrustedcas_filepath: certificates/ca/ca.pem
plugins.security.ssl.transport.enforce_hostname_verification: false
plugins.security.authcz.admin_dn:
  - 'CN=ADMIN,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'
plugins.security.nodes_dn:
  - 'CN=os00,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'
  - 'CN=os01,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'
  - 'CN=os02,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'
  - 'CN=os03,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'
  - 'CN=os04,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'
  - 'CN=os05,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'
  - 'CN=os06,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'
  - 'CN=os07,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'
plugins.security.audit.type: internal_opensearch
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.restapi.roles_enabled: ["all_access", "security_rest_api_access"]
cluster.routing.allocation.disk.threshold_enabled: false
opendistro_security.audit.config.disabled_rest_categories: NONE
opendistro_security.audit.config.disabled_transport_categories: NONE

Պահպանեք ֆայլը 'opensearch.yml' և ավարտին հասցրեք խմբագրիչը:

Այնուհետև բացեք OpenSearch Dashboards կազմաձևման ֆայլը «opensearch_dashboards.yml»՝ օգտագործելով ստորև նշված նանո խմբագրիչի հրամանը:

nano opensearch_dashboards.yml

Ֆայլին ավելացրեք հետևյալ տողերը. Համոզվեք, որ փոխեք OpenSearch Dashboards-ի օգտանունը և գաղտնաբառը 'internal_users.yml' ֆայլում օգտագործողի 'kibanaserver'-ի մանրամասներով:

server.name: os_dashboards
server.host: "0.0.0.0"
opensearch.username: kibanaserver
opensearch.password: password
opensearch.requestHeadersWhitelist: [authorization, securitytenant]
opensearch_security.multitenancy.enabled: true
opensearch_security.multitenancy.tenants.preferred: [Private, Global]
opensearch_security.readonly_mode.roles: [kibana_read_only]
# Use this setting if you are running opensearch-dashboards without https
opensearch_security.cookie.secure: false
# Encrypt traffic between the browser and OpenSearch-Dashboards
server.ssl.enabled: true
server.ssl.certificate: "/usr/share/opensearch-dashboards/config/certificates/os-dashboards/os-dashboards.pem"
server.ssl.key: "/usr/share/opensearch-dashboards/config/certificates/os-dashboards/os-dashboards.key"
# Encrypt traffic between OpenSearch-Dashboards and Opensearch
opensearch.ssl.certificateAuthorities: ["/usr/share/opensearch-dashboards/config/certificates/ca/ca.pem"]
opensearch.ssl.verificationMode: full

Ավարտելուց հետո պահպանեք և դուրս եկեք ֆայլից:

Վերջապես, գործարկեք ստորև նշված apt հրամանը՝ ծառի փաթեթը տեղադրելու և ձեր OpenSearch տեղակայման ֆայլերի և գրացուցակների ցանկը ստուգելու համար:

sudo apt install tree
tree .

Դուք պետք է ստանաք այսպիսի արդյունք:

Դրանով ավարտվել է Docker-ի միջոցով OpenSearch-ի տեղակայման բոլոր նախապատրաստությունները: Դուք պատրաստ եք տեղադրել OpenSearch-ը Docker-ի և Docker Compose-ի միջոցով:

OpenSearch Cluster-ի և OpenSearch-ի վահանակների տեղակայում

Նախքան սկսելը, համոզվեք, որ դուք գտնվում եք OpenSearch նախագծի գրացուցակում 'opensearch-project': Այնուհետև գործարկեք հետևյալ «docker compose» հրամանը՝ OpenSearch-ի տեղակայումը ստեղծելու և սկսելու համար:

docker compose up -d

Դուք պետք է ստանաք այսպիսի արդյունք. Կան 3 OpenSearch կոնտեյներ os01, os02 և os03 ստեղծվել և գործարկվել են: Նաև ստեղծվել և գործարկվել է OpenSearch Dashboards-ի «osdashboards» կոնտեյները:

Ստուգեք ձեր OpenSearch նախագծի գործող ծառայությունների/կոնտեյներների ցանկը հետևյալ հրամանի միջոցով:

docker compose ps

Եթե տեսնում եք, որ «STATUS»-ը «Վերև» է, ապա բեռնարկղը/ծառայությունը աշխատում է: «PORTS» բաժնում դուք պետք է տեսնեք բացված նավահանգիստները՝ ըստ կոնտեյների, դեպի հյուրընկալող սարք:

Երբ OpenSearch կլաստերը աշխատում է, այժմ դուք պետք է կիրառեք օգտվողի նոր կոնֆիգուրացիան, որը ստեղծել եք 'internal_users.yml' ֆայլի միջոցով: Դրան հասնելու համար կարող եք գործարկել հետևյալ «docker» հրամանը: Նաև, համոզվեք, որ սպասեք մոտ 30-60 վայրկյան՝ նախքան այս հրամանը գործարկելը՝ համոզվելու համար, որ OpenSearch կլաստերը աշխատում է:

Հետևյալ հրամանը կգործարկի «securityadmin.sh» bash սցենարը «os01» կոնտեյների/ծառայության վրա և կկիրառի նոր օգտվողներ ձեր OpenSearch կլաստերի վրա:

docker compose exec os01 bash -c "chmod +x plugins/opensearch-security/tools/securityadmin.sh && bash plugins/opensearch-security/tools/securityadmin.sh -cd config/opensearch-security -icl -nhnv -cacert config/certificates/ca/ca.pem -cert config/certificates/ca/admin.pem -key config/certificates/ca/admin.key -h localhost"

Արդյունք:

Հաջորդը, գործարկեք հետևյալ հրամանը՝ համոզվելու համար, որ կոնտեյները աշխատում է: Այնուհետև կարող եք ստուգել Docker հոսթի բաց նավահանգիստների ցանկը ստորև բերված ss հրամանի միջոցով:

docker compose ps
ss -tulpn

Արդյունք - 9200 և 9600 նավահանգիստներն օգտագործվում են OpenSearch կլաստերի կողմից, իսկ 5601 նավահանգիստներն օգտագործվում են OpenSearch Dashboards-ի կողմից:

Վերջապես, դուք կարող եք հաստատել OpenSearch կլաստերում նույնականացումը օգտվողի անվան և գաղտնաբառի միջոցով, որոնք ստեղծել եք «internal_users.yml» ֆայլում:

Կատարեք նույնականացում՝ որպես ադմինիստրատորի օգտատեր OpenSearch կլաստերում:

curl https://192.168.5.100:9200 -u admin:password -k

Արդյունք – Նույնականացումը հաջող է, և դուք պետք է տեսնեք OpenSearch ծրագրի մանրամասները, որոնք ներկայումս օգտագործում եք ձեր կլաստերում:

Կատարեք նույնականացում որպես kibanaserver օգտվող OpenSearch կլաստերում:

curl https://192.168.5.100:9200 -u kibanaserver:password -k

Արդյունք – Նույնականացումը հաջող է, և դուք պետք է տեսնեք OpenSearch ծրագրի մանրամասները, որոնք ներկայումս օգտագործում եք ձեր կլաստերում:

Դրանով դուք այժմ տեղակայել եք OpenSearch կլաստերը և OpenSearch Dashboard-ները Docker-ի և Docker Compose-ի միջոցով: Հաջորդ քայլում դուք մուտք կունենաք ձեր OpenSearch Dashboards-ի տեղակայումը և կհաստատեք կապը OpenSearch Dashboard-ի և OpenSearch կլաստերի միջև:

Բացի այդ, երբ ձեր OpenSearch-ի տեղակայման ժամանակ սխալ ունեք, կարող եք ստուգել յուրաքանչյուր կոնտեյների գրանցամատյանները ստորև «docker compose» հրամանի միջոցով:

Հիմնական օգտագործումը «docker compose»՝ գրանցամատյանները ստուգելու համար:

docker compose logs
docker compose logs SERVICE

«docker compose» հրամանի միջոցով կոնկրետ բեռնարկղերի/ծառայության գրանցամատյանների ստուգում:

docker compose logs osdashboards
docker compose logs os01
docker compose logs os02
docker compose logs os03

Մուտք գործել OpenSearch Dashboards

Բացեք ձեր վեբ զննարկիչը և այցելեք ձեր սերվերի IP հասցեն, որին հաջորդում է OpenSearch Dashboards պորտը «5601» (այսինքն՝ https://192.168.5.100:5601/): Դուք պետք է ստանաք OpenSearch Dashboards մուտքի էջը:

Մուտքագրեք «kibanaserver» օգտվողը և գաղտնաբառը, ապա սեղմեք «Մուտք գործել»:

Հաջողության դեպքում դուք պետք է ստանաք հետևյալ էջը. Սեղմեք «Իմ կողմից ուսումնասիրել» և կտեսնեք OpenSearch Dashboard-ի գլխավոր էջը:

Դրանով դուք ունեք OpenSearch Dashboards-ը գործարկված, իսկ իսկությունը միացված է: Բացի այդ, OpenSearch Dashboard-ներն աշխատում են ապահով HTTPS կապերի ներքո՝ ձեր ստեղծած SSL/TLS վկայագրերի միջոցով:

Հաջորդը, ստուգեք կապը OpenSearch Dashboard-ի և OpenSearch կլաստերի միջև OpenSearch API-ի միջոցով:

Սեղմեք ձախ ընտրացանկի վրա, տեղափոխվեք Կառավարում բաժին և սեղմեք «Dev Tools»:

Այժմ մուտքագրեք «GET /» հարցումը վահանակի վրա և սեղմեք նվագարկման կոճակը: Հաջողության դեպքում դուք պետք է տեսնեք ելքը աջ կողմում՝ ձեր OpenSearch սերվերի մասին մանրամասն տեղեկություններով: Բացի այդ, վերևի աջ կողմում կարող եք տեսնել «200 - OK» HTTP կոդը, որը հաստատում է, որ հարցումը կատարվում է առանց սխալի:

Մուտքագրեք մեկ այլ հարցում 'GET _cat/nodes?format=json&filter_path=ip,name'՝ ստուգելու OpenSearch հանգույցները, որոնք հասանելի են OpenSearch կլաստերում: OpenSearch կլաստերի վրա դուք պետք է տեսնեք երեք տարբեր հանգույցներ՝ os01 IP հասցեով 172.23.0.5, os02՝ «172.23» IP հասցեով: 0.3», և os3 «172.23.0.2» IP հասցեով:

Սա հաստատում է, որ OpenSearch Dashboard-ները միացված են OpenSearch կլաստերին:

Եզրակացություն

Այս ձեռնարկում դուք տեղադրել եք OpenSearch-ը Docker-ի և Docker Compose-ի միջոցով Ubuntu 22.04 սերվերի վրա: Դուք ստեղծել եք OpenSearch Cluster-ը 3 տարբեր կոնտեյներով Docker-ում: Դուք նաև ապահովել եք OpenSearch-ը TLS վկայագրերով, միացրել եք նույնականացումը և թույլտվությունը, ինչպես նաև կարգավորել եք օգտվողներին OpenSearch-ում: Բացի դրանից, դուք նաև կարգավորել և օպտիմիզացրել եք Ubuntu Linux սերվերը OpenSearch-ը տեղակայելու համար:

Դուք նաև տեղադրել եք OpenSearch Dashboard-ները Docker-ի և Docker Compose-ի միջոցով: Այնուհետև դուք նաև միացրել եք OpenSearch Dashboards կոնտեյները OpenSearch Cluster-ին:

Այս կարգավորումով դուք այժմ կարող եք ավելին ուսումնասիրել OpenSearch-ի մասին, ավելացնել որոշակի ինտեգրում ձեր OpenSearch-ին, ստեղծել լրացուցիչ նույնականացում և շատ ավելին: Դուք կարող եք ավելին իմանալ OpenSearch-ի մասին OpenSearch-ի պաշտոնական փաստաթղթերից: