brianfrankcooper / YCSB

Yahoo! Cloud Serving Benchmark
Apache License 2.0
4.93k stars 2.23k forks source link

redis.password is failing to authenticate with "Exception in thread "Thread-2" redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required." error #1425

Open amgads opened 4 years ago

amgads commented 4 years ago

Using the latest YCSB -- 0.17.0 -- trying to run on redis cluster with password auth. bash-4.2$ redis-cli --version redis-cli 5.0.7 bash-4.2$

1) If I have the cluster without password, everything works fine:

both: bin/ycsb load redis -P workloads/workloada -p redis.host=10.254.143.239 -p redis.port=6379 -p redis.cluster=true and

bin/ycsb run redis -P workloads/workloada -p redis.host=10.254.143.239 -p redis.port=6379 -p redis.cluster=true

are successful

2) when installed redis cluster with password for auth, same runs failed and gave the following erros, appreciate your support

bin/ycsb load redis -P workloads/workloada -p redis.host=10.254.172.37 -p redis.port=6379 -p redis.cluster=true -p redis.password=amgad

/etc/alternatives/jre_openjdk/bin/java -cp /usr/lib/PerfBench/ycsb-0.17.0/redis-binding/conf:/usr/lib/PerfBench/ycsb-0.17.0/conf:/usr/lib/PerfBench/ycsb-0.17.0/lib/core-0.17.0.jar:/usr/lib/PerfBench/ycsb-0.17.0/lib/jackson-core-asl-1.9.4.jar:/usr/lib/PerfBench/ycsb-0.17.0/lib/jackson-mapper-asl-1.9.4.jar:/usr/lib/PerfBench/ycsb-0.17.0/lib/HdrHistogram-2.1.4.jar:/usr/lib/PerfBench/ycsb-0.17.0/lib/htrace-core4-4.1.0-incubating.jar:/usr/lib/PerfBench/ycsb-0.17.0/redis-binding/lib/commons-pool2-2.4.2.jar:/usr/lib/PerfBench/ycsb-0.17.0/redis-binding/lib/redis-binding-0.17.0.jar:/usr/lib/PerfBench/ycsb-0.17.0/redis-binding/lib/jedis-2.9.0.jar site.ycsb.Client -db site.ycsb.db.RedisClient -P workloads/workloada -p redis.host=10.254.172.37 -p redis.port=6379 -p redis.cluster=true -p redis.password=amgad -load Command line: -db site.ycsb.db.RedisClient -P workloads/workloada -p redis.host=10.254.172.37 -p redis.port=6379 -p redis.cluster=true -p redis.password=amgad -load YCSB Client 0.17.0

Loading workload... Starting test. Exception in thread "Thread-2" redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required. at redis.clients.jedis.Protocol.processError(Protocol.java:127) at redis.clients.jedis.Protocol.process(Protocol.java:161) at redis.clients.jedis.Protocol.read(Protocol.java:215) at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:340) at redis.clients.jedis.Connection.getRawObjectMultiBulkReply(Connection.java:285) at redis.clients.jedis.Connection.getObjectMultiBulkReply(Connection.java:291) at redis.clients.jedis.Jedis.clusterSlots(Jedis.java:3376) at redis.clients.jedis.JedisClusterInfoCache.discoverClusterNodesAndSlots(JedisClusterInfoCache.java:54) at redis.clients.jedis.JedisClusterConnectionHandler.initializeSlotsCache(JedisClusterConnectionHandler.java:39) at redis.clients.jedis.JedisClusterConnectionHandler.(JedisClusterConnectionHandler.java:17) at redis.clients.jedis.JedisSlotBasedConnectionHandler.(JedisSlotBasedConnectionHandler.java:20) at redis.clients.jedis.JedisSlotBasedConnectionHandler.(JedisSlotBasedConnectionHandler.java:15) at redis.clients.jedis.BinaryJedisCluster.(BinaryJedisCluster.java:41) at redis.clients.jedis.JedisCluster.(JedisCluster.java:83) at redis.clients.jedis.JedisCluster.(JedisCluster.java:70) at redis.clients.jedis.JedisCluster.(JedisCluster.java:66) at redis.clients.jedis.JedisCluster.(JedisCluster.java:62) at site.ycsb.db.RedisClient.init(RedisClient.java:82) at site.ycsb.DBWrapper.init(DBWrapper.java:86) at site.ycsb.ClientThread.run(ClientThread.java:91) at java.lang.Thread.run(Thread.java:748) [OVERALL], RunTime(ms), 155 [OVERALL], Throughput(ops/sec), 0.0 [TOTAL_GCS_Copy], Count, 0 [TOTAL_GC_TIME_Copy], Time(ms), 0 [TOTAL_GCTIME%_Copy], Time(%), 0.0 [TOTAL_GCS_MarkSweepCompact], Count, 0 [TOTAL_GC_TIME_MarkSweepCompact], Time(ms), 0 [TOTAL_GCTIME%_MarkSweepCompact], Time(%), 0.0 [TOTAL_GCs], Count, 0 [TOTAL_GC_TIME], Time(ms), 0 [TOTAL_GCTIME%], Time(%), 0.0 bash-4.2#

amgads commented 4 years ago

Any input?

amgads commented 4 years ago

Should I conclude there's no support for password, yet? the readme file https://github.com/brianfrankcooper/YCSB/tree/0.14.0/redis#4-provide-redis-connection-parameters suggests otherwise! Any one has used it?

amgads commented 4 years ago

Any update or insight?

amgads commented 4 years ago

this has been for 2 month now -- any help?

busbey commented 4 years ago

we're all volunteer based here, so please set your expectations accordingly.

What does the redis server log show when you try to do this? is it showing an authentication attempt?

What happens if you turn up debug logging for the client libraries?

amgads commented 4 years ago

Thanks Sean - I understand!

What happens if you turn up debug logging for the client libraries? I assume this on the ycsb client side. Would you kindly tell me how to turn it on? is there a specific log generated or still output will be stdout?

busbey commented 4 years ago

I assume this on the ycsb client side. Would you kindly tell me how to turn it on? is there a specific log generated or still output will be stdout?

YCSB client log output is controlled via whatever slf4j binding is present. but a quick look at the redis binding doesn't really have any relevant logging.

So the logging we'd want to increase is in the Jedis library that is used. The first step would be to figure out what logging framework it uses so we can adjust the logging level for it.

amgads commented 4 years ago

1) Running the "monitor" command on the Redis Server will show when an AUTH command is executed, it won't tell if it's a success or not. Here's the output on the server pods indicating received an AUTH with the password

    1595363464.619183 [0 127.0.0.1:45544] "AUTH" 
     "WZeW5C2IeckXA16q0j4gR6zsXaKD0RL5MpHw9D8vWMS2Ka2S4K10hhj2iwM3hmYd"

2) The Redis server does though send the error message "NOAUTH Authentication required" back to client which shows in the return of the command on the client side as follows:

bash-4.2# bin/ycsb load redis -s -P workloads/workloada -threads 4 /etc/alternatives/jre_openjdk/bin/java -cp /usr/lib/PerfBench/ycsb-0.17.0/redis-binding/conf:/usr/lib/PerfBench/ycsb-0.17.0/conf:/usr/lib/PerfBench/ycsb-0.17.0/lib/core-0.17.0.jar:/usr/lib/PerfBench/ycsb-0.17.0/lib/jackson-core-asl-1.9.4.jar:/usr/lib/PerfBench/ycsb-0.17.0/lib/jackson-mapper-asl-1.9.4.jar:/usr/lib/PerfBench/ycsb-0.17.0/lib/HdrHistogram-2.1.4.jar:/usr/lib/PerfBench/ycsb-0.17.0/lib/htrace-core4-4.1.0-incubating.jar:/usr/lib/PerfBench/ycsb-0.17.0/redis-binding/lib/commons-pool2-2.4.2.jar:/usr/lib/PerfBench/ycsb-0.17.0/redis-binding/lib/redis-binding-0.17.0.jar:/usr/lib/PerfBench/ycsb-0.17.0/redis-binding/lib/jedis-2.9.0.jar site.ycsb.Client -db site.ycsb.db.RedisClient -s -P workloads/workloada -threads 4 -load Command line: -db site.ycsb.db.RedisClient -s -P workloads/workloada -threads 4 -load YCSB Client 0.17.0

Loading workload... Starting test. 2020-07-21 20:31:00:545 0 sec: 0 operations; est completion in 0 second Exception in thread "Thread-5" redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required. at redis.clients.jedis.Protocol.processError(Protocol.java:127) at redis.clients.jedis.Protocol.process(Protocol.java:161) at redis.clients.jedis.Protocol.read(Protocol.java:215) at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:340) at redis.clients.jedis.Connection.getRawObjectMultiBulkReply(Connection.java:285) at redis.clients.jedis.Connection.getObjectMultiBulkReply(Connection.java:291) at redis.clients.jedis.Jedis.clusterSlots(Jedis.java:3376) at redis.clients.jedis.JedisClusterInfoCache.discoverClusterNodesAndSlots(JedisClusterInfoCache.java:54) at redis.clients.jedis.JedisClusterConnectionHandler.initializeSlotsCache(JedisClusterConnectionHandler.java:39) at redis.clients.jedis.JedisClusterConnectionHandler.(JedisClusterConnectionHandler.java:17) at redis.clients.jedis.JedisSlotBasedConnectionHandler.(JedisSlotBasedConnectionHandler.java:20) at redis.clients.jedis.JedisSlotBasedConnectionHandler.(JedisSlotBasedConnectionHandler.java:15) at redis.clients.jedis.BinaryJedisCluster.(BinaryJedisCluster.java:41) at redis.clients.jedis.JedisCluster.(JedisCluster.java:83) at redis.clients.jedis.JedisCluster.(JedisCluster.java:70) at redis.clients.jedis.JedisCluster.(JedisCluster.java:66) at redis.clients.jedis.JedisCluster.(JedisCluster.java:62) at site.ycsb.db.RedisClient.init(RedisClient.java:82) at site.ycsb.DBWrapper.init(DBWrapper.java:86) at site.ycsb.ClientThread.run(ClientThread.java:91) at java.lang.Thread.run(Thread.java:748) Exception in thread "Thread-6" redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required. at redis.clients.jedis.Protocol.processError(Protocol.java:127) at redis.clients.jedis.Protocol.process(Protocol.java:161) at redis.clients.jedis.Protocol.read(Protocol.java:215) .......

What is the next step?

amgads commented 3 years ago

Any idea?

amgads commented 3 years ago

Any idea how to move forward with the password issue? I'll need to use TLS as well, but if password is failing that would affect TLS as well.