zoukankan      html  css  js  c++  java
  • 搭建日志收集系统时使用客户端连接etcd遇到的问题

    问题: 在做日志收集系统时使用到etcd,其中server端在linux上,首先安装第三方包(windows)(安装过程可能会有问题,我遇到的是连接谷歌官网请求超时,如果已经出现下面的两个文件夹并且文件夹中都有内容则可以不理会错误):

    go get -u -v github.com/coreos/etcd/clientv3

    完成之后,在开发环境中会增加两个文件夹:

    1. srcgo.etcd.io
    2. srcgithub.comcoreos

    客户端测试程序(go语言,命名为main.go,注意etcd server端的ip地址换成你自己的):

     1 package main
     2 
     3 import (
     4     "fmt"
     5     etcd_client "github.com/coreos/etcd/clientv3"
     6     //etcd_client "go.etcd.io/etcd/clientv3"
     7     "time"
     8 )
     9 
    10 func main() {
    11 
    12     cli, err := etcd_client.New(etcd_client.Config{
    13         Endpoints:   []string{"192.168.30.136:2379", "192.168.30.136:22379", "192.168.30.136:32379"},
    14         DialTimeout: 5 * time.Second,
    15     })
    16     if err != nil {
    17         fmt.Println("connect failed, err:", err)
    18         return
    19     }
    20 
    21     fmt.Println("connect succ")
    22     defer cli.Close()
    23 }
    测试程序

    在该文件夹下执行,报错如下:

    go run main.go
    F:Goprojectsrcgo_dev_yuanmago_devday12etcd_conn>go run main.go
    # github.com/coreos/etcd/clientv3
    ........github.comcoreosetcdclientv3auth.go:116:72: cannot use auth.call Opts (type  []"github.com/coreos/etcd/vendor/google.golang.org/grpc".CallOption)
    as type []"go.etcd.io/etcd/vendor/google.golang.org/grpc".CallOption in argument to auth.remote.AuthEnable
    ........github.comcoreosetcdclientv3auth.go:121:74: cannot use auth.call Opts (type []"github.com/coreos/etcd/vendor/google.golang.org/grpc".CallOption)
    as type []"go.etcd.io/etcd/vendor/google.golang.org/grpc".CallOption in argument to auth.remote.AuthDisable
    ........github.comcoreosetcdclientv3auth.go:126:100: cannot use auth.cal lOpts (type []"github.com/coreos/etcd/vendor/google.golang.org/grpc".CallOption)
     as type []"go.etcd.io/etcd/vendor/google.golang.org/grpc".CallOption in argument to auth.remote.UserAdd
    ........github.comcoreosetcdclientv3auth.go:131:86: cannot use auth.call Opts (type []"github.com/coreos/etcd/vendor/google.golang.org/grpc".CallOption)
    as type []"go.etcd.io/etcd/vendor/google.golang.org/grpc".CallOption in argument to auth.remote.UserDelete
    ........github.comcoreosetcdclientv3auth.go:136:122: cannot use auth.cal
    lOpts (type []"github.com/coreos/etcd/vendor/google.golang.org/grpc".CallOption)  as type []"go.etcd.io/etcd/vendor/google.golang.org/grpc".CallOption in argumen
    t to auth.remote.UserChangePassword
    ........github.comcoreosetcdclientv3auth.go:141:104: cannot use auth.cal lOpts (type []"github.com/coreos/etcd/vendor/google.golang.org/grpc".CallOption)
     as type []"go.etcd.io/etcd/vendor/google.golang.org/grpc".CallOption in argumen
    t to auth.remote.UserGrantRole
    ........github.comcoreosetcdclientv3auth.go:146:80: cannot use auth.call Opts (type []"github.com/coreos/etcd/vendor/google.golang.org/grpc".CallOption)
    as type []"go.etcd.io/etcd/vendor/google.golang.org/grpc".CallOption in argument
     to auth.remote.UserGet
    ........github.comcoreosetcdclientv3auth.go:151:72: cannot use auth.call Opts (type []"github.com/coreos/etcd/vendor/google.golang.org/grpc".CallOption)
    as type []"go.etcd.io/etcd/vendor/google.golang.org/grpc".CallOption in argument
     to auth.remote.UserList
    ........github.comcoreosetcdclientv3auth.go:156:106: cannot use auth.cal lOpts (type []"github.com/coreos/etcd/vendor/google.golang.org/grpc".CallOption)
     as type []"go.etcd.io/etcd/vendor/google.golang.org/grpc".CallOption in argumen
    t to auth.remote.UserRevokeRole
    ........github.comcoreosetcdclientv3auth.go:161:80: cannot use auth.call Opts (type []"github.com/coreos/etcd/vendor/google.golang.org/grpc".CallOption)
    as type []"go.etcd.io/etcd/vendor/google.golang.org/grpc".CallOption in argument
     to auth.remote.RoleAdd
    ........github.comcoreosetcdclientv3auth.go:161:80: too many errors

    这样的错误原因可以参考:

    https://blog.csdn.net/zhangyexinaisurui/article/details/87001028 

    解决的办法:

    1. 在 import 的时候,不要引用 "github.com/coreos/etcd/clientv3",而是 "go.etcd.io/etcd/clientv3",原因已在上面的链接有所说明:

    //"github.com/coreos/etcd/clientv3"
    "go.etcd.io/etcd/clientv3"

    然后使用上面的测试程序测试,如果还有问题,再使用下面的 2 方法试下。

    2. 可以到 github.com/coreos/etcd 地址下载所有的包,然后解压缩到 srcgithub.comcoreos 路径下,如果没有该目录则创建,并将解压后的文件夹命名为 etcd(原来为etcd-master),再将前面改名后的 etcd文件夹拷贝到 srcgo.etcd.io 目录下,再使用测试程序测试下(测试前记着启动etcd的server端,同时测试程序 import "go.etcd.io/etcd/clientv3")。

    参考文献:

    • https://blog.csdn.net/zhangyexinaisurui/article/details/87001028
  • 相关阅读:
    客户数据库出现大量cache buffer chains latch
    Oracle 表空间与数据文件
    一些优秀的个人空间
    DBMS_STATS.GATHER_TABLE_STATS详解
    C#获取主程序目录的方法
    python 里的 continue 和 break 语法理解
    Python 打印九九乘法表
    数据可视化平台 Apache Superset 安装
    jinja2.Markup 对HTML文本文件进行处理
    Chrome Console 控制台使用指南
  • 原文地址:https://www.cnblogs.com/xuejiale/p/10665845.html
Copyright © 2011-2022 走看看