Estoy tratando de ejecutar una aplicación sonarqube en la plataforma AWS fargate. Cuando ejecuto la imagen de la ventana acoplable sin procesar, funciona de maravilla. Pero si paso las propiedades JDBC al contenedor como argumento, me enfrento al siguiente problema. Aparentemente, la búsqueda elástica necesita una nueva configuración. Si se trata de un clúster de ECS, haría ssh en las instancias de EC2 y actualizaría estas propiedades. En el caso de fargate, ¿cómo logro esto?
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
Desde el problema de github, parece que no es posible ya que no hay una instancia EC2 o Host ivolvole en Fargate.
las soluciones para el error
max_map_countparecen establecermax_memory_mapdirectamente en el host (lo que puede provocar efectos secundarios no deseados) o usar el indicador sysctl en el comando de ejecución de la ventana acoplable. Desafortunadamente, ninguna de estas opciones no es compatible con Fargate, ya que implica interactuando con la propia instancia del contenedor.
Pero la otra forma es aumentar file limit y deshabilitar la verificación mmap .
I had to properly configure U limits on my ECS task definition, something like: "ulimits": [ { "name": "nofile", "softLimit": 65535, "hardLimit": 65535 } ]He deshabilitado mmap en ElasticSearch, que elimina el requisito de configuración
max_map_count. Esto se puede hacer configurando el ajustesonar.search.javaAdditionalOpts SonarQube. No pude hacerlo con una variable de entorno ya que ECS parece estar comiéndolas, pero al final simplemente la pasé como un parámetro al contenedor, que funciona ya que el punto de entrada está configurado y consume los argumentos correctamente. En mi caso:
"command": [ "-Dsonar.search.javaAdditionalOpts=-Dnode.store.allow_mmapfs=false" ]Agregar la variable discovery.type = single-node en la sección "Variables de entorno" (editar el contenedor es) en la definición de la tarea me resolvió el problema. Si está utilizando el archivo json, agregue la siguiente sección
"environment": [ { "name": "discovery.type", "value": "single-node" } ],Desafortunadamente, no sé por qué funcionó.