[개발이야기#083] 스팀잇 검색엔진 개발을 해보자 - 서버 구성 1차 적으로 완료

in EverSteem2 months ago



안녕하세요 가야태자 @talkit 입니다.

검색엔진 색인을 위한 서버 구성을 일단 완료 했습니다.

MySQL 서버와 수집 서버를 같이 사용할 계획입니다.

그래서 docker로 구성을 진행 했습니다.

MariaDB 구성

version: '3.8'

services:
  mariadb:
    container_name: mariadb01
    image: mariadb:latest
    restart: always
    environment:
      - MARIADB_ROOT_PASSWORD=Ab123456789!
    ports:
      - "3306:3306"
    volumes:
      - /home/talkit/mariadb/data:/var/lib/mysql
      - /home/talkit/mariadb/log:/var/log/mysql
      - /home/talkit/mariadb/etc/my.cnf:/etc/mysql/conf.d/my.cnf

MySQL 대신에 마리아디비를 사용했고, docker 구성은 위와 같습니다.

docker ps
talkit@talkit01:~$ docker ps
CONTAINER ID   IMAGE            COMMAND                   CREATED        STATUS          PORTS                                         NAMES
c2ab47cbc085   mariadb:latest   "docker-entrypoint.s…"   22 hours ago   Up 20 minutes   0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp   mariadb01

위와 같이 서버/컨테이너가 동작하고 있습니다.

ElasticSearch 구성

검색엔진은 OpenSearch사용했어야 되는데 일단 엘라스틱 서치를 이용했네요 이부분은 추후에 수정 해야겠습니다. ㅠ.ㅠ

version: '3.8'

services:
  elasticsearch:
    image: elasticsearch:8.11.1
    container_name: elasticsearch
    environment:
      - node.name=talkit-node-1
      - cluster.name=talkit-cluster
      - discovery.type=single-node
      - xpack.security.enabled=false
      - ES_JAVA_OPTS=-Xms512m -Xmx512m
    volumes:
      - /home/talkit/elasticsearch/data:/usr/share/elasticsearch/data
      - /home/talkit/elasticsearch/logs:/usr/share/elasticsearch/logs
      - /home/talkit/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    ports:
      - "9200:9200"
      - "9300:9300"
    ulimits:
      memlock:
        soft: -1
        hard: -1

도커를 만들어서 이것도 실행하고 있습니다.

docker ps

talkit@talkit02:~/elasticsearch$ docker ps
CONTAINER ID   IMAGE                  COMMAND                   CREATED              STATUS              PORTS                                                                                      NAMES
6206fadd1a45   elasticsearch:8.11.1   "/bin/tini -- /usr/l…"   About a minute ago   Up About a minute   0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp   elasticsearch

카프카는 예전에 설치 해서 서버는 일단 구성하면서 꺼두었습니다.

https://steemit.com/kr/@talkit/080

위 글에서 확인하시면 됩니다.

추후에 구성할 내용은 다음과 같습니다.

python을 이용해서 마리아DB로 @talkit 계정의 게시물 전체를 수집합니다.

수집 계정은 늘려갈 계획입니다.

우선 제 계정부터 편하게 검색을 하고 싶어서 ^^

다음으로 수집된 MySQL의 내용을 Kafka 커넥트(Source) 를 통해서 임시 저장을 진행 합니다.

끝으로 Kafka 커텍터 (Sink)를 통해서 엘라스틱 서치에 색인을 진행 합니다.

그리고, 해당 색인의 내용을 API로 검색을 해보겠습니다.

우선 여기까지 해야 추후에 검색 UI또 만들고 필요한 API도 만들 수 있을 것 같습니다.

감사합니다.

#kr-dev #steemsearch #talkit #postingcuration #ecblog #docker #steem


Write Once, reward forever via EverSteem app