Проблема с подключением к ArangoDB в настройке AWS EC2 с использованием Docker и CloudFormationJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Проблема с подключением к ArangoDB в настройке AWS EC2 с использованием Docker и CloudFormation

Сообщение Anonymous »

У меня есть настройка AWS, в которой я использую шаблон «Инфраструктура как код» (IAC) (YAML) для развертывания стека с помощью CloudFormation. В моем развертывании создаются два экземпляра AWS EC2: Main-service и Data-service.
Оба экземпляра EC2 запускают контейнер Docker внутри экземпляра. Экземпляр основной службы имеет общедоступный IP-адрес и запускает приложение Java в контейнере, который работает на порту 8000. Экземпляр службы данных имеет только частный IP-адрес и запускает сервер ArangoDB на порту 8529 в контейнере, который работает на порту 8002. Мой Цель состоит в том, чтобы подключиться к ArangoDB, работающему внутри контейнера Docker в службе данных, из приложения Java, работающего в основной службе. Ниже приведен мой Java-код:

Код: Выделить всё

public static ArangoDB getArangoDB(AQLServerConnection aqlServerConnection) throws Exception {
String address = aqlServerConnection.getHost() + ":" + aqlServerConnection.getPort();
//port used for connection: 8529
try {
ArangoDB arangoDB = new ArangoDB.Builder()
.host(aqlServerConnection.getHost(), aqlServerConnection.getPort())
.user(aqlServerConnection.getUsername())
.password(aqlServerConnection.getPassword())
.build();
return arangoDB;
} catch (Exception e) {
throw e;
}
}
Если я не сопоставляю порт 8529 в Docker, запустите команду контейнера Main-service. Я сопоставляю только порт 8529 в команде запуска Docker контейнера службы данных и добавляю правила для входящего трафика в группу безопасности службы данных. Ниже мой скрипт:
Data-service.yaml

Код: Выделить всё

docker run -d --restart always --network host -p 8000:8000 -p 8002:8002 -p 8529:8529 \
-v /var/run/docker.sock:/var/run/docker.sock --log-driver=awslogs \
-e IB_SERVICE_DEPLOYMENT_TYPE=AWS_EC2 -e IS_PRIVATE_SUBNET=true \
${Repository}/dataservice-${Architecture}:latest
Security_Group.yaml:

Код: Выделить всё

Resources:
MainServiceSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupName: MainServiceSecurityGroup
VpcId: !Ref VPC
GroupDescription: Allows access from anywhere to the Main Service
SecurityGroupIngress:
- IpProtocol: tcp
ToPort: 8000
FromPort: 8000
CidrIp: 0.0.0.0/0
Tags:
- {Key: Name, Value: !Sub 'MainServiceSecurityGroup-${StackName}'}
DataServiceSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupName: DataServiceSecurityGroup
VpcId: !Ref VPC
GroupDescription: Allows only the Main-Service to access the services
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 8002
ToPort: 8002
SourceSecurityGroupId: !Ref IBMainServiceSecurityGroup
- IpProtocol: tcp
FromPort: 8529
ToPort: 8529
SourceSecurityGroupId: !Ref MainServiceSecurityGroup
Однако при такой конфигурации подключение к ArangoDB из Main-service завершается неудачей со следующим исключением:

Код: Выделить всё

com.arangodb.ArangoDBException: Cannot contact any host!
at com.arangodb.internal.net.FallbackHostHandler.get(FallbackHostHandler.java:57) ~[core-7.1.0.jar:7.1.0]
at com.arangodb.internal.net.DirtyReadHostHandler.get(DirtyReadHostHandler.java:52) ~[core-7.1.0.jar:7.1.0]
at com.arangodb.http.HttpCommunication.execute(HttpCommunication.java:101) ~[http-protocol-7.1.0.jar:7.1.0]
at com.arangodb.http.HttpCommunication.execute(HttpCommunication.java:66) ~[http-protocol-7.1.0.jar:7.1.0]
at com.arangodb.http.HttpProtocol.execute(HttpProtocol.java:44) ~[http-protocol-7.1.0.jar:7.1.0]
at com.arangodb.internal.ArangoExecutorSync.execute(ArangoExecutorSync.java:60) ~[core-7.1.0.jar:7.1.0]
at com.arangodb.internal.ArangoExecutorSync.execute(ArangoExecutorSync.java:52) ~[core-7.1.0.jar:7.1.0]
Если я сопоставлю порт 8529 в команде запуска Docker и группу безопасности Main-service, то подключение к ArangoDB будет успешным.
< strong>Main-service.yaml

Код: Выделить всё

docker run --stop-timeout 45 -d --restart always --network host -p 8000:8000 -p 8529:8529 \
${Repository}/mainserver-${Architecture}:latest
Security_Group.yaml:

Код: Выделить всё

Resources:
MainServiceSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupName: MainServiceSecurityGroup
VpcId: !Ref VPC
GroupDescription: Allows access from anywhere to the Main Service
SecurityGroupIngress:
- IpProtocol: tcp
ToPort: 8000
FromPort: 8000
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: 8529
ToPort: 8529
CidrIp: 0.0.0.0/0
Tags:
- {Key: Name, Value: !Sub 'MainServiceSecurityGroup-${StackName}'}
DataServiceSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupName: DataServiceSecurityGroup
VpcId: !Ref VPC
GroupDescription: Allows only the Main-Service to access the services
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 8002
ToPort: 8002
SourceSecurityGroupId: !Ref IBMainServiceSecurityGroup
- IpProtocol: tcp
FromPort: 8529
ToPort: 8529
SourceSecurityGroupId: !Ref MainServiceSecurityGroup
Согласно моим выводам, сопоставление порта на экземпляре с общедоступным IP-адресом сопряжено с риском безопасности.

[*]Да мой подход неверен?
[*]Могу ли я избежать сопоставления порта 8529 на уровне экземпляра основной службы?
[*]Есть ли обходной путь?


Подробнее здесь: https://stackoverflow.com/questions/787 ... oudformati
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ошибка AWS EC2 CORS при попытке подключить бэкэнд EC2 Frontend (Vercel)?
    Anonymous » » в форуме Javascript
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Почему мой контейнер Docker не может взаимодействовать с LocalStack в настройке Docker-in-Docker?
    Anonymous » » в форуме Python
    0 Ответы
    62 Просмотры
    Последнее сообщение Anonymous
  • Как обновить модуль cfn-response в стеке CloudFormation
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Как обновить модуль cfn-response в стеке CloudFormation
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Arangodb: дескрипторы файлов недоступны.
    Anonymous » » в форуме Linux
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»