在docker容器中使用akka应用程序的问题

前端之家收集整理的这篇文章主要介绍了在docker容器中使用akka应用程序的问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我们有一个在非集群模式下运行的akka​​应用程序(不是akka集群).
我们正在尝试将此应用程序停靠,并遇到问题.我们正在使用docker主机网络,并且由于各种其他原因,我们尚未准备好使用其他类型的网络.

应用程序绑定到端口9080上的0.0.0.0接口,并自行执行简单的http运行状况检查.
此运行状况检查失败,因为我们看到连接重置错误.我们只在docker容器内看到这个.

在启动期间,应用程序绑定到0:0:0:0:0:0:0:0:9080.
2018-04-13T08:29:54.921-0700 [INFO] – 绑定到/ 0:0:0:0:0:0:0:0:9080

akka日志:

  1. 2018-04-13T08:34:25.311-0700 [DEBUG] akka.io.TcpListener [15:34:25.311UTC] - New connection accepted
  2. 2018-04-13T08:34:25.312-0700 [DEBUG] akka.io.SelectionHandler [15:34:25.312UTC] - now supervising Actor[akka://appname/system/IO-TCP/selectors/$d/12#394551476]
  3. 2018-04-13T08:34:25.312-0700 [DEBUG] akka.io.TcpIncomingConnection [15:34:25.312UTC] - started (akka.io.TcpIncomingConnection@1dafecc7)
  4. 2018-04-13T08:34:25.312-0700 [DEBUG] akka.io.TcpIncomingConnection [15:34:25.312UTC] - now watched by Actor[akka://appname/system/IO-TCP/selectors/$d#992175932]
  5. 2018-04-13T08:34:25.312-0700 [DEBUG] akka.io.TcpIncomingConnection [15:34:25.312UTC] - now watched by Actor[akka://appname/user/IO-HTTP/listener-0/88#-1187840999]
  6. 2018-04-13T08:34:25.313-0700 [DEBUG] akka.io.SelectionHandler [15:34:25.313UTC] - now supervising Actor[akka://appname/system/IO-TCP/selectors/$h/11#789402148]
  7. 2018-04-13T08:34:25.313-0700 [DEBUG] akka.io.TcpOutgoingConnection [15:34:25.313UTC] - started (akka.io.TcpOutgoingConnection@62c77639)
  8. 2018-04-13T08:34:25.313-0700 [DEBUG] akka.io.TcpOutgoingConnection [15:34:25.313UTC] - now watched by Actor[akka://appname/system/IO-TCP/selectors/$h#227381172]
  9. 2018-04-13T08:34:25.313-0700 [DEBUG] akka.io.TcpOutgoingConnection [15:34:25.313UTC] - Attempting connection to [/0.0.0.0:9080]
  10. 2018-04-13T08:34:25.313-0700 [DEBUG] akka.io.TcpListener [15:34:25.313UTC] - New connection accepted
  11. 2018-04-13T08:34:25.313-0700 [DEBUG] akka.io.TcpOutgoingConnection [15:34:25.313UTC] - Connection established to [/0.0.0.0:9080]
  12. 2018-04-13T08:34:25.314-0700 [DEBUG] akka.io.TcpOutgoingConnection [15:34:25.314UTC] - now watched by Actor[akka://appname/user/IO-HTTP/group-0/52#1518564728]
  13. 2018-04-13T08:34:25.314-0700 [DEBUG] akka.io.SelectionHandler [15:34:25.314UTC] - now supervising Actor[akka://appname/system/IO-TCP/selectors/$h/12#1641348988]
  14. 2018-04-13T08:34:25.314-0700 [DEBUG] akka.io.TcpIncomingConnection [15:34:25.314UTC] - started (akka.io.TcpIncomingConnection@65bac45)
  15. 2018-04-13T08:34:25.314-0700 [DEBUG] akka.io.TcpIncomingConnection [15:34:25.314UTC] - now watched by Actor[akka://appname/system/IO-TCP/selectors/$h#227381172]
  16. 2018-04-13T08:34:26.327-0700 [DEBUG] akka.io.TcpIncomingConnection [15:34:26.327UTC] - now watched by Actor[akka://appname/user/IO-HTTP/listener-0/89#-1079090421]
  17. 2018-04-13T08:34:26.327-0700 [DEBUG] akka.io.TcpIncomingConnection [15:34:26.327UTC] - stopped
  18. 2018-04-13T08:34:26.327-0700 [DEBUG] akka.io.TcpOutgoingConnection [15:34:26.327UTC] - Closing connection due to IO error java.io.IOException: Connection reset by peer
  19. 2018-04-13T08:34:26.327-0700 [DEBUG] akka.io.TcpOutgoingConnection [15:34:26.327UTC] - stopped
  20. 2018-04-13T08:34:26.328-0700 [DEBUG] akka.io.TcpIncomingConnection [15:34:26.328UTC] - stopped

喷雾日志:

  1. 2018-04-13T08:35:39.168-0700 - Dispatching GET request to http://10.4.4.178:9080/admin/health to handler Actor[akka://appname/system/IO-TCP/selectors/$b/20#-595408603]
  2. 2018-04-13T08:35:45.296-0700 - Dispatching GET request to http://10.4.4.178:9080/admin/health to handler Actor[akka://appname/system/IO-TCP/selectors/$d/19#721242322]
  3. 2018-04-13T08:35:51.372-0700 - Dispatching GET request to http://10.4.4.178:9080/admin/health to handler Actor[akka://appname/system/IO-TCP/selectors/$c/16#1510321611]
  4. 2018-04-13T08:35:57.436-0700 - Dispatching GET request to http://10.4.4.178:9080/admin/health to handler Actor[akka://appname/system/IO-TCP/selectors/$g/22#1994752981]
  5. 2018-04-13T08:36:03.622-0700 - Dispatching GET request to http://10.4.4.178:9080/admin/health to handler Actor[akka://appname/system/IO-TCP/selectors/$f/20#-1450294853]

健康检查日志

  1. 2018-04-13T08:32:53.356-0700 [INFO ] - [BEGIN] Health check
  2. 2018-04-13T08:32:53.356-0700 [DEBUG] - Memory : SUCCESS
  3. 2018-04-13T08:32:54.378-0700 [DEBUG] - HTTP : FAILURE,spray.can.Http$ConnectionException: ErrorClosed(Connection reset by peer)
  4. 2018-04-13T08:32:54.378-0700 [ERROR] - spray.can.Http$ConnectionException: ErrorClosed(Connection reset by peer)
  5. at spray.can.client.HttpHostConnectionSlot.reportDisconnection(HttpHostConnectionSlot.scala:228)
  6. at spray.can.client.HttpHostConnectionSlot$$anonfun$connected$1.applyOrElse(HttpHostConnectionSlot.scala:161)
  7. at akka.actor.Actor$class.aroundReceive(Actor.scala:465)
  8. at spray.can.client.HttpHostConnectionSlot.aroundReceive(HttpHostConnectionSlot.scala:33)
  9. at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
  10. at akka.actor.ActorCell.invoke_aroundBody0(ActorCell.scala:487)
  11. at akka.actor.ActorCell$AjcClosure1.run(ActorCell.scala:1)
  12. at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149)
  13. at akka.instrumentation.ActorCellInstrumentation.aroundBehavIoUrInvoke(ActorCellInstrumentation.scala:66)
  14. at akka.actor.ActorCell.invoke(ActorCell.scala:483)
  15. at akka.dispatch.MailBox.processMailBox(MailBox.scala:238)
  16. at akka.dispatch.MailBox.run(MailBox.scala:220)
  17. at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
  18. at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
  19. at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
  20. at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
  21. at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
  22. 2018-04-13T08:32:54.378-0700 [INFO ] - [END ] Status: Failed (1022 ms)

Dockerfile:

  1. FROM java-base:0.2.3
  2. EXPOSE 9080 9081
  3. ENV MAIN_CLASS="akka.kernel.Main" \
  4. ADMIN_PORT="9080" \
  5. HEALTHCHECK_URI="/admin/health" \
  6. TEMPLATES="/app/templates/override.settings.tmpl:/app/conf/override.settings /app/templates/environment.conf.tmpl:/app/conf/environment.conf" \
  7. JMX_PORT="9081" \
  8. APP_NAME="appname" \
  9. APP_VERSION="1.34.0" \
  10. CLASSPATH="/app/conf" \
  11. ENV_FILES="/app/conf/override.settings" \
  12. INSTRUMENTATION_PATH="/app/ext" \
  13. JVM_MISC_OPTS="-Dpid=1 \
  14. -Dlog4j.configuration=file:///app/conf/log4j.xml \
  15. -javaagent:\${INSTRUMENTATION_PATH}/aspectjweaver-1.7.4.jar \
  16. -Dlog4j.configuration=file:///app/conf/log4j.xml \
  17. -Dlogs.dir=/app/logs \
  18. -Dakka.home=/app \
  19. -Dakka.kernel.quiet=false \
  20. -Dconfig.file=/app/conf/environment.conf" \
  21. MAIN_CLASS_ARGS=appname.Boot
  22. ADD ext /app/ext
  23. ADD deps /app/libs
  24. ADD templates/ /app/templates/

Docker-compose文件

  1. version: '3.3'
  2. services:
  3. appname:
  4. container_name: appname
  5. image: appname:1.34.0
  6. network_mode: host
  7. restart: unless-stopped
  8. ulimits:
  9. nofile:
  10. soft: 65535
  11. hard: 65535
  12. environment:
  13. UID:
  14. SDLC_ENVIRONMENT:
  15. REGION:
  16. PARTITION:
  17. TAGS:
  18. INTERNAL_IP:
  19. CONSUL_ADDRESS:
  20. DOCKER_GID:
  21. MAIN_CLASS_ARGS: appname.Boot
  22. volumes:
  23. - "./logs:/app/logs"

Akka配置:

  1. 2018-04-17T11:39:17.753-0700 [DEBUG] akka.event.EventStream [18:39:17.713UTC] - Default Loggers started
  2. 2018-04-17T11:39:17.755-0700 [INFO ] akka.actor.ActorSystemImpl [18:39:17.738UTC] - {
  3. "akka" : {
  4. "actor" : {
  5. "creation-timeout" : "20s","debug" : {
  6. "autoreceive" : "off","event-stream" : "off","fsm" : "off","lifecycle" : "off","receive" : "off","router-misconfiguration" : "off","unhandled" : "off"
  7. },"default-dispatcher" : {
  8. "attempt-teamwork" : "on","default-executor" : {
  9. "fallback" : "fork-join-executor"
  10. },"executor" : "default-executor","fork-join-executor" : {
  11. "parallelism-factor" : 16,"parallelism-min" : 8,"task-peeking-mode" : "FIFO"
  12. },"mailBox-requirement" : "","shutdown-timeout" : "1s","thread-pool-executor" : {
  13. "allow-core-timeout" : "on","core-pool-size-factor" : 3,"core-pool-size-max" : 64,"core-pool-size-min" : 8,"keep-alive-time" : "60s","max-pool-size-factor" : 3,"max-pool-size-max" : 64,"max-pool-size-min" : 8,"task-queue-size" : -1,"task-queue-type" : "linked"
  14. },"throughput" : 1,"throughput-deadline-time" : "0ms","type" : "Dispatcher"
  15. },"default-mailBox" : {
  16. "mailBox-capacity" : 1000,"mailBox-push-timeout-time" : "10s","mailBox-type" : "akka.dispatch.UnboundedMailBox","stash-capacity" : -1
  17. },"deployment" : {
  18. "default" : {
  19. "dispatcher" : "","mailBox" : "","nr-of-instances" : 1,"resizer" : {
  20. "backoff-rate" : 0.1,"backoff-threshold" : 0.3,"enabled" : "off","lower-bound" : 1,"messages-per-resize" : 10,"pressure-threshold" : 1,"rampup-rate" : 0.2,"upper-bound" : 10
  21. },"routees" : {
  22. "paths" : []
  23. },"router" : "from-code","tail-chopping-router" : {
  24. "interval" : "10 milliseconds"
  25. },"virtual-nodes-factor" : 10,"within" : "5 seconds"
  26. }
  27. },"dsl" : {
  28. "default-timeout" : "5s","inBox-size" : 1000
  29. },"guardian-supervisor-strategy" : "akka.actor.DefaultSupervisorStrategy","mailBox" : {
  30. "bounded-deque-based" : {
  31. "mailBox-type" : "akka.dispatch.BoundedDequeBasedMailBox"
  32. },"bounded-queue-based" : {
  33. "mailBox-type" : "akka.dispatch.BoundedMailBox"
  34. },"requirements" : {
  35. "akka.dispatch.BoundedDequeBasedMessageQueueSemantics" : "akka.actor.mailBox.bounded-deque-based","akka.dispatch.BoundedMessageQueueSemantics" : "akka.actor.mailBox.bounded-queue-based","akka.dispatch.DequeBasedMessageQueueSemantics" : "akka.actor.mailBox.unbounded-deque-based","akka.dispatch.MultipleConsumerSemantics" : "akka.actor.mailBox.unbounded-queue-based","akka.dispatch.UnboundedDequeBasedMessageQueueSemantics" : "akka.actor.mailBox.unbounded-deque-based","akka.dispatch.UnboundedMessageQueueSemantics" : "akka.actor.mailBox.unbounded-queue-based"
  36. },"unbounded-deque-based" : {
  37. "mailBox-type" : "akka.dispatch.UnboundedDequeBasedMailBox"
  38. },"unbounded-queue-based" : {
  39. "mailBox-type" : "akka.dispatch.UnboundedMailBox"
  40. }
  41. },"provider" : "akka.actor.LocalActorRefProvider","reaper-interval" : "5s","router" : {
  42. "type-mapping" : {
  43. "balancing-pool" : "akka.routing.BalancingPool","broadcast-group" : "akka.routing.BroadcastGroup","broadcast-pool" : "akka.routing.BroadcastPool","consistent-hashing-group" : "akka.routing.ConsistentHashingGroup","consistent-hashing-pool" : "akka.routing.ConsistentHashingPool","from-code" : "akka.routing.NoRouter","random-group" : "akka.routing.RandomGroup","random-pool" : "akka.routing.RandomPool","round-robin-group" : "akka.routing.RoundRobinGroup","round-robin-pool" : "akka.routing.RoundRobinPool","scatter-gather-group" : "akka.routing.ScatterGatherFirstCompletedGroup","scatter-gather-pool" : "akka.routing.ScatterGatherFirstCompletedPool","smallest-mailBox-pool" : "akka.routing.SmallestMailBoxPool","tail-chopping-group" : "akka.routing.TailChoppingGroup","tail-chopping-pool" : "akka.routing.TailChoppingPool"
  44. }
  45. },"serialization-bindings" : {
  46. "[B" : "bytes","java.io.Serializable" : "java"
  47. },"serialize-creators" : "off","serialize-messages" : "off","serializers" : {
  48. "bytes" : "akka.serialization.ByteArraySerializer","java" : "akka.serialization.JavaSerializer"
  49. },"typed" : {
  50. "timeout" : "5s"
  51. },"unstarted-push-timeout" : "10s"
  52. },"daemonic" : "off","extensions" : [],"home" : "/app","io" : {
  53. "pinned-dispatcher" : {
  54. "executor" : "thread-pool-executor","thread-pool-executor" : {
  55. "allow-core-pool-timeout" : "off","allow-core-timeout" : "off"
  56. },"type" : "PinnedDispatcher"
  57. },"tcp" : {
  58. "batch-accept-limit" : 10,"direct-buffer-pool-limit" : 1000,"direct-buffer-size" : "128 KiB","file-io-dispatcher" : "akka.actor.default-dispatcher","file-io-transferTo-limit" : "512 KiB","finish-connect-retries" : 5,"management-dispatcher" : "akka.actor.default-dispatcher","max-channels" : 256000,"max-received-message-size" : "unlimited","nr-of-selectors" : 10,"register-timeout" : "5s","selector-association-retries" : 10,"selector-dispatcher" : "akka.io.pinned-dispatcher","trace-logging" : "off","windows-connection-abort-workaround-enabled" : "off","worker-dispatcher" : "akka.actor.default-dispatcher"
  59. },"udp" : {
  60. "direct-buffer-pool-limit" : 1000,"max-channels" : 4096,"nr-of-selectors" : 1,"receive-throughput" : 3,"received-message-size-limit" : "unlimited","select-timeout" : "infinite","udp-connected" : {
  61. "direct-buffer-pool-limit" : 1000,"worker-dispatcher" : "akka.actor.default-dispatcher"
  62. }
  63. },"jvm-exit-on-fatal-error" : "on","kernel" : {
  64. "quiet" : "true"
  65. },"log-config-on-start" : "on","log-dead-letters" : 10,"log-dead-letters-during-shutdown" : "on","logger-startup-timeout" : "5s","loggers" : [
  66. "akka.event.slf4j.Slf4jLogger"
  67. ],"loglevel" : "DEBUG","scheduler" : {
  68. "implementation" : "akka.actor.LightArrayRevolverScheduler","shutdown-timeout" : "5s","tick-duration" : "10ms","ticks-per-wheel" : 512
  69. },"stdout-loglevel" : "WARNING","version" : "2.3.16"
  70. },"awt" : {
  71. "toolkit" : "sun.awt.X11.XToolkit"
  72. },"java" : {
  73. "version" : "1.8.0_121","vm" : {
  74. "info" : "mixed mode","name" : "Java HotSpot(TM) 64-Bit Server VM","specification" : {
  75. "name" : "Java Virtual Machine Specification","vendor" : "Oracle Corporation","version" : "1.8"
  76. },"version" : "25.121-b13"
  77. }
  78. }
  79. "pid" : "1","spray" : {
  80. "can" : {
  81. "client" : {
  82. "chunkless-streaming" : "off","connecting-timeout" : "10s","idle-timeout" : "610s","max-encryption-chunk-size" : "1m","parsing" : {
  83. "header-cache" : {
  84. "Content-MD5" : 0,"Date" : 0,"If-Match" : 0,"If-Modified-Since" : 0,"If-None-Match" : 0,"If-Range" : 0,"If-Unmodified-Since" : 0,"User-Agent" : 32,"default" : 12
  85. },"illegal-header-warnings" : "off","incoming-auto-chunking-threshold-size" : "infinite","max-chunk-ext-length" : 256,"max-chunk-size" : "1m","max-content-length" : "8m","max-header-count" : 64,"max-header-name-length" : 64,"max-header-value-length" : "8k","max-response-reason-length" : 64,"max-uri-length" : "2k","ssl-session-info-header" : "off","uri-parsing-mode" : "strict"
  86. },"proxy" : {
  87. "http" : "default","https" : "default"
  88. },"reaping-cycle" : "250 ms","request-header-size-hint" : 512,"request-timeout" : "605s","response-chunk-aggregation-limit" : "5m","ssl-tracing" : "off","user-agent-header" : "spray-can/1.3.2"
  89. },"connection-dispatcher" : "akka.actor.default-dispatcher","host-connector" : {
  90. "client" : {
  91. "chunkless-streaming" : "off","idle-timeout" : "60 s","parsing" : {
  92. "header-cache" : {
  93. "Content-MD5" : 0,"default" : 12
  94. },"illegal-header-warnings" : "on","uri-parsing-mode" : "strict"
  95. },"proxy" : {
  96. "http" : "default","https" : "default"
  97. },"request-timeout" : "20 s","response-chunk-aggregation-limit" : "1m","user-agent-header" : "spray-can/1.3.2"
  98. },"idle-timeout" : "30 s","max-connections" : 100,"max-redirects" : 0,"max-retries" : 0,"pipelining" : "off"
  99. },"host-connector-dispatcher" : "akka.actor.default-dispatcher","listener-dispatcher" : "akka.actor.default-dispatcher","manager-dispatcher" : "akka.actor.default-dispatcher","parsing" : {
  100. "header-cache" : {
  101. "Content-MD5" : 0,"default" : 12
  102. },"uri-parsing-mode" : "strict"
  103. },"server" : {
  104. "automatic-back-pressure-handling" : "on","back-pressure" : {
  105. "noack-rate" : 10,"reading-low-watermark" : "infinite"
  106. },"bind-timeout" : "1s","chunkhandler-registration-timeout" : "500 ms","chunkless-streaming" : "off","default-host-header" : "","max-header-value-length" : "16k","uri-parsing-mode" : "relaxed-with-raw-query"
  107. },"parsing-error-abort-timeout" : "2s","pipelining-limit" : 1,"raw-request-uri-header" : "off","registration-timeout" : "1s","remote-address-header" : "on","request-chunk-aggregation-limit" : "1m","response-header-size-hint" : 512,"server-header" : "BlueJeans Proxy","ssl-encryption" : "off","stats-support" : "on","timeout-handler" : "","timeout-timeout" : "2 s","transparent-head-requests" : "on","unbind-timeout" : "1s","verbose-error-messages" : "off"
  108. },"settings-group-dispatcher" : "akka.actor.default-dispatcher"
  109. }
  110. "version" : "1.3.2"
  111. }
  112. }
  113. 2018-04-17T11:39:20.980-0700 [DEBUG] akka.io.TcpListener [18:39:20.979UTC] - Successfully bound to /10.4.4.178:9080

版本:
akka – 2.3.0
喷雾 – 1.3.2
在docker容器内的alpine linux上运行.

任何指针都会有所帮助.提前致谢.

最佳答案
在docker-compose文件中,在appname下定义端口映射.

  1. ports:
  2. 9080:9080

猜你在找的Docker相关文章