我想在coreOS集群上部署高可用性Redis,我需要一个可以工作的Redis Sentinel docker镜像(即Dockerfile).我已经收集了足够的信息/专业知识来创建一个(我认为)...但是我对高级网络的有限知识/经验是阻止我构建和共享它的唯一因素.
这里的专家可以帮我开发一个Redis Sentinel Dockerfile(现在不存在)吗?Redis/Docker社区真的会从中受益.
这是更广泛的问题和背景:https: //github.com/antirez/redis/pull/1908
我认为解决方案就在这里:https: //github.com/antirez/redis/pull/1908#issuecomment-54380876
这是我一直在使用的Dockerfile ...但如果你阅读上面的帖子,你会看到我的评论(joshula)......它缺乏mattsta所说的网络修复.请注意,因为我在coreOS上使用它,所以sentinel.conf中的任何配置设置都是在运行时通过命令行设置的(因此为ENTRYPOINT).
# Pull base image.
FROM dockerfile/ubuntu:latest
# Install Redis.
RUN \
cd /tmp && \
wget http://download.redis.io/redis-stable.tar.gz && \
tar xvzf redis-stable.tar.gz && \
cd redis-stable && \
make && \
make install && \
cp -f src/redis-sentinel /usr/local/bin && \
mkdir -p /etc/redis && \
cp -f *.conf /etc/redis && \
rm -rf /tmp/redis-stable* && \
sed -i 's/^\(bind .*\)$/# \1/' /etc/redis/redis.conf && …Run Code Online (Sandbox Code Playgroud) 有没有人在Docker容器环境中看到运行Redis的性能问题?
这是我注意到的......设置A:本地机器,传统Redis安装设置B:本地机器,使用规范Redis图像https://registry.hub.docker.com/_/redis/
我的本地计算机上有一个相同的HTTP服务器,其响应速度与请求/响应周期允许的速度一样快.
观察: - A可以维持B的吞吐量的大约2倍. - 当您进行基准测试时(从容器内),B与B的性能相同
因此,由于网络问题,这使我相信B比A慢:即在虚拟化环境中运行软件引入的网络中继正在产生重大的性能问题......
只是想知道是否有其他人注意到这样的事情?
我很困惑.当我用以下身体发帖时
{"lng":1.23, "lat":4.56,"utc":789}
Run Code Online (Sandbox Code Playgroud)
这个返回{0,0,0}(不正确)
func test(rw http.ResponseWriter, req *http.Request) {
type data struct {
lng float64
lat float64
utc int
}
decoder := json.NewDecoder(req.Body)
var t data
err := decoder.Decode(&t)
if err != nil {
panic("PANIC")
}
log.Println(t)
}
Run Code Online (Sandbox Code Playgroud)
这个返回{1.23,4.56,789}(正确)
func test(rw http.ResponseWriter, req *http.Request) {
type data struct {
Lng float64
Lat float64
Utc int
}
decoder := json.NewDecoder(req.Body)
var t data
err := decoder.Decode(&t)
if err != nil {
panic("PANIC")
}
log.Println(t)
}
Run Code Online (Sandbox Code Playgroud)
唯一的区别是我在结构定义中使用大写字母.我错过了什么吗?这是一个错误吗?