EC2에서 laravel5.8 및 Amazon Elasticsearch Service를 사용할 때 드뎌
7205 단어 라라벨PHP7ElasticsearchEC2AWS
개요
AWS에서 EC2 및 Elasticsearch Service
을 연결하려고 생각하면 의외로 끼워 버린 이야기입니다.
상당히 ec2상에 elasticsearch를 도입하여 이용하고 있는 분은 많지만, Elasticsearch Service를 세워 연결하는 기사는 별로 없다,,,.
AWS EC2에 ElasticSearch 설치
AWS에서 두려워하지 않는 EC2 + Amazon Elasticsearch Service로 빠졌습니다.
다소 인터넷으로 굴러가고 있습니다만, 지금을 설레는 라라벨 를 이용한 기사가 없었기 때문에 쓰고 있는 대로.
이용환경
인프라편
인프라편
운영 환경
로컬 개발 환경
로컬 개발 환경은 docker를 이용해 elasticsearch의 컨테이너를 세워 개발을 하고 있습니다.
laravel을 사용하고 있기 때문에 모처럼이므로 scout을 이용.
로컬의 .env 설정은 여기
.envSCOUT_DRIVER=elasticsearch
ELASTICSEARCH_HOST=http://elasticsearch:9200
ELASTICSEARCH_HOST의 엔드포인트만 변경해 주면 좋잖아!
그리고
Elasticsearch Service와 EC2를 연결해 봅니다.
※Elasticsearch Service 경영 콘솔 화면
ec2에서 curl로 두드리면 정상적으로 움직이는 반응이 있다!
ec2[centos@ip-***-**-**-* ****]$ curl https://エンドポイント.es.amazonaws.com
{
"name" : "WNwU_Bn",
"cluster_name" : "*********:********",
"cluster_uuid" : "*****************",
"version" : {
"number" : "6.7.0",
"build_flavor" : "oss",
"build_type" : "zip",
"build_hash" : "b8dfb4c",
"build_date" : "2019-05-22T06:01:36.852084Z",
"build_snapshot" : false,
"lucene_version" : "7.7.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
연결되어 있다는 것은
.env(로컬)SCOUT_DRIVER=elasticsearch
ELASTICSEARCH_HOST=http://elasticsearch:9200
을
.env(EC2)SCOUT_DRIVER=elasticsearch
ELASTICSEARCH_HOST=エンドポイントのURL
.env를 다시 쓰면 갈 수 있습니다!
laravel과 Elasticsearch Service가 함께 작동하지 않습니다!
.env 파일을 다시 작성해도 한 방향으로php artisan migrate:refresh --seed
통과하지 않는다!
RDS 함께 연결되어 있고 그쪽은 정상적으로 움직이고 있습니다만,
테스트 데이터를 넣고 있는 시딩이 아무것도 통과하지 않는다.
UserTableSeeder.phpArtisan::call('scout:import', ["model" => User::class]);
오류가 발생하는 부분.
오류 메시지Elasticsearch\Common\Exceptions\NoNodesAvailableException : No alive nodes found in your cluster
조사하고 보면 타임 아웃으로이 에러 메세지가 나오기 때문에 타임 아웃의 시간을 길게 해 보라고 쓰고있다
그러나, 테스트 레코드는 1 레코드만.
타임 아웃이 될 리 없다.
여전히 curl는 통과한다.
로컬 환경도 문제없이 움직이고 있다.
수수께끼가 깊어져 시간만이 지나가는,,,.
서있는 것은 포트 번호입니다.
마음에 드는 절도 없고, PC와 망설임.
vendor 이하의 소스 코드를 오로지 쫓고 있으면 이상한 기술이.
ClientBuilder.php /**
* @throws InvalidArgumentException
*/
private function extractURIParts(string $host): array
{
$parts = parse_url($host);
if ($parts === false) {
throw new InvalidArgumentException("Could not parse URI");
}
if (isset($parts['port']) !== true) {
$parts['port'] = 9200;
}
return $parts;
}
어라?
port 번호 쓰지 않으면 마음대로 9200번에 연결하도록 하고 있어?
아니, ,,,,
유석에 https
라고 붙어 있으면 443에 연결할 것입니다,,,,.
라고 쫓아 보는 것도 그런 처리 없음.
즉,
.env(EC2)SCOUT_DRIVER=elasticsearch
ELASTICSEARCH_HOST=エンドポイントのURL:443
그리고 포트 번호를 기재해야하는 것 같습니다!
사소한 설정 파일로 완전히 끼워 버렸습니다.
역시 제대로 소스 코드를 쫓지 않으면 갈 수 없네요!
Reference
이 문제에 관하여(EC2에서 laravel5.8 및 Amazon Elasticsearch Service를 사용할 때 드뎌), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Yusuke1899/items/b3a2b78da8ae64055b61
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
SCOUT_DRIVER=elasticsearch
ELASTICSEARCH_HOST=http://elasticsearch:9200
※Elasticsearch Service 경영 콘솔 화면
ec2에서 curl로 두드리면 정상적으로 움직이는 반응이 있다!
ec2
[centos@ip-***-**-**-* ****]$ curl https://エンドポイント.es.amazonaws.com
{
"name" : "WNwU_Bn",
"cluster_name" : "*********:********",
"cluster_uuid" : "*****************",
"version" : {
"number" : "6.7.0",
"build_flavor" : "oss",
"build_type" : "zip",
"build_hash" : "b8dfb4c",
"build_date" : "2019-05-22T06:01:36.852084Z",
"build_snapshot" : false,
"lucene_version" : "7.7.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
연결되어 있다는 것은
.env(로컬)
SCOUT_DRIVER=elasticsearch
ELASTICSEARCH_HOST=http://elasticsearch:9200
을
.env(EC2)
SCOUT_DRIVER=elasticsearch
ELASTICSEARCH_HOST=エンドポイントのURL
.env를 다시 쓰면 갈 수 있습니다!
laravel과 Elasticsearch Service가 함께 작동하지 않습니다!
.env 파일을 다시 작성해도 한 방향으로php artisan migrate:refresh --seed
통과하지 않는다!
RDS 함께 연결되어 있고 그쪽은 정상적으로 움직이고 있습니다만,
테스트 데이터를 넣고 있는 시딩이 아무것도 통과하지 않는다.
UserTableSeeder.phpArtisan::call('scout:import', ["model" => User::class]);
오류가 발생하는 부분.
오류 메시지Elasticsearch\Common\Exceptions\NoNodesAvailableException : No alive nodes found in your cluster
조사하고 보면 타임 아웃으로이 에러 메세지가 나오기 때문에 타임 아웃의 시간을 길게 해 보라고 쓰고있다
그러나, 테스트 레코드는 1 레코드만.
타임 아웃이 될 리 없다.
여전히 curl는 통과한다.
로컬 환경도 문제없이 움직이고 있다.
수수께끼가 깊어져 시간만이 지나가는,,,.
서있는 것은 포트 번호입니다.
마음에 드는 절도 없고, PC와 망설임.
vendor 이하의 소스 코드를 오로지 쫓고 있으면 이상한 기술이.
ClientBuilder.php /**
* @throws InvalidArgumentException
*/
private function extractURIParts(string $host): array
{
$parts = parse_url($host);
if ($parts === false) {
throw new InvalidArgumentException("Could not parse URI");
}
if (isset($parts['port']) !== true) {
$parts['port'] = 9200;
}
return $parts;
}
어라?
port 번호 쓰지 않으면 마음대로 9200번에 연결하도록 하고 있어?
아니, ,,,,
유석에 https
라고 붙어 있으면 443에 연결할 것입니다,,,,.
라고 쫓아 보는 것도 그런 처리 없음.
즉,
.env(EC2)SCOUT_DRIVER=elasticsearch
ELASTICSEARCH_HOST=エンドポイントのURL:443
그리고 포트 번호를 기재해야하는 것 같습니다!
사소한 설정 파일로 완전히 끼워 버렸습니다.
역시 제대로 소스 코드를 쫓지 않으면 갈 수 없네요!
Reference
이 문제에 관하여(EC2에서 laravel5.8 및 Amazon Elasticsearch Service를 사용할 때 드뎌), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Yusuke1899/items/b3a2b78da8ae64055b61
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Artisan::call('scout:import', ["model" => User::class]);
Elasticsearch\Common\Exceptions\NoNodesAvailableException : No alive nodes found in your cluster
마음에 드는 절도 없고, PC와 망설임.
vendor 이하의 소스 코드를 오로지 쫓고 있으면 이상한 기술이.
ClientBuilder.php
/**
* @throws InvalidArgumentException
*/
private function extractURIParts(string $host): array
{
$parts = parse_url($host);
if ($parts === false) {
throw new InvalidArgumentException("Could not parse URI");
}
if (isset($parts['port']) !== true) {
$parts['port'] = 9200;
}
return $parts;
}
어라?
port 번호 쓰지 않으면 마음대로 9200번에 연결하도록 하고 있어?
아니, ,,,,
유석에
https
라고 붙어 있으면 443에 연결할 것입니다,,,,.라고 쫓아 보는 것도 그런 처리 없음.
즉,
.env(EC2)
SCOUT_DRIVER=elasticsearch
ELASTICSEARCH_HOST=エンドポイントのURL:443
그리고 포트 번호를 기재해야하는 것 같습니다!
사소한 설정 파일로 완전히 끼워 버렸습니다.
역시 제대로 소스 코드를 쫓지 않으면 갈 수 없네요!
Reference
이 문제에 관하여(EC2에서 laravel5.8 및 Amazon Elasticsearch Service를 사용할 때 드뎌), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Yusuke1899/items/b3a2b78da8ae64055b61텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)